私はFile
エンティティとエンティティを持っていUser
ます。エンティティは、というプロパティを通じてエンティティFile
と 1:1 の関係を持ちます(これは、ファイルを最後に変更したユーザーを記録します)。という名前のエンティティ内にもフィールドがあり、これは実際の FK リレーションシップです。リレーションシップは一方向です。エンティティには、エンティティに戻るナビゲーション プロパティがありません。User
LastChangeUser
File
LastChangeUserId
User
File
class File
{
public int Id { get; set; }
public int? LastChangeUserId { get; set; }
public virtual User LastChangeUser { get; set; }
}
class User
{
public int Id { get; set; }
}
File
が変更された場合、に を設定する必要がLastChangeUser
ありFile
ます。完全な User オブジェクトではなく、ユーザーの ID しか持っていません。だから、私はこれをやっています:
file.LastChangeUser = null;
file.LastChangeUserId = userId;
File
これは、オブジェクトが新しく作成されたときにファイルを作成する際に機能するようです (エンティティ コレクションに追加される POCO)。
File
ただし、オブジェクトが DB から (プロキシとして) 取得された既存のオブジェクトである場合、ファイルの更新時には機能しません。
後者の場合、LastChangeUserId
フィールドの DB で NULL になります。(SaveChanges の呼び出し後、オブジェクトはとフィールドnull
の両方に含まれます)。LastChangeUser
LastChangeUserId
多分私はここで間違ったことをしているだけですか?正しい方法は何ですか?プロパティUser
を設定するためにオブジェクトを取得する必要がありますか?LastChangeUser