2017-08-10 10 views
0

InsertedByという列のテーブルがあります。基本的にレコードが挿入されたときには、最初に列に挿入された人の名前が保持されます。その後、その行への今後の更新で変更されることはありません。この列は、他の列と一緒に読み込む必要があるため、C#エンティティのプロパティです。エンティティフレームワークがNULLでない場合、特定の列を更新しないようにするにはどうすればよいですか?

最初の挿入後にEFがこの列を更新しないようにするにはどうすればよいですか?私はdbContextでSaveChangesを使用しています。

+1

値を取得した後で値を変更しない限り(*それは追跡中です*)。変更を防止するために、セッターの可視性を変更することができます。 – Igor

答えて

0

私はあなたがEF CodeFirstを使用しているかどうかわからないんだけど、そうならば、次のコードは、あなたのために有用である可能性がある:

public class Human 
    { 
     public int Id { get; set; } 
     private string insertedBy; 

     public string InsertedBy 
     { 
      get { return insertedBy; } 
      set 
      { 
       if (string.IsNullOrEmpty(insertedBy)) 
       { 
        insertedBy = value; 
       } 
      } 
     } 
     public string Name { get; set; } 
    } 

InsertedByプロパティはもう更新されません。

+0

これは、更新中に誰かがInsertedByの値を変更した場合、元のInsertedByを上書きする危険性があります。 –

+0

@Tony_Henrich「InsertedBy」の元の値が存在するため、フィールドを更新することはできません。私はそれをテストしたので確信しています。 –

0

私はInsertByの値をラウンドトリップしました。 InsertByの値を読み取り、同じ値で更新してください。

関連する問題