私は3つのテーブル:the User table, the Records table and the UserRecords table
を持っています。linq-to-sqlの照会権限を確保する
列がそうです:
UserTable
UserID | OtherUserDataFields
RecordsTable
RecordID | OtherRecordDataFields
UserRecords
UserID | RecordID
UserRecordsテーブルは、ユーザーがどのレコードで権限を持っていると言われます。私は2つのパラメータを受け取ることによってRecordsTableを更新する関数を持っています:レコードTheRecord(RecordIDフィールドを含む)とUserID。
ユーザーは、このようなそのレコードに許可されている場合、私は、パラメータやテストで供給されるレコードIDを持つレコードを取得するためにデータコンテキストMYDCでクエリを書いている:
var RecordToUpdate = (
from r in MyDC.RecordsTable
from u in MyDC.UserRecords
where r.RecordID == TheRecord.RecordID && TheRecord.RecordID == u.RecordID
where u.UserID == TheUserID
select r).SingleOrDefault();
は、この私が保証されますユーザに許可されたレコードだけがフェッチされるでしょうか?私は、ユーザーが許可されていないレコードを悪意を持って送信し、これらの不正なレコードを変更するケースを避けたいと考えています。
ご協力いただきありがとうございます。
'&& u.UserID = TheUserID'は' = 'が欠けています。今は割り当てです – Nuffin
@Tobias:はい、ちょうどタイプミスです。ありがとう。 – frenchie
'UserRecords'テーブルに外部キーが含まれている場合、LINQクエリから結合を削除することができ、コードの可読性が向上します。 – Steven