3

デフォルト値を持つ多数の null 許容フィールドを持つ既存のデータベースに対して EF (v5) を使用しています。

新しいエンティティを挿入するときに、null 許容フィールドに値が指定されていない場合は、null が挿入されます (データベースの既定値は使用されません)。これは、私が本当に null を意図しているかどうかを EF が判断できないという点で理にかなっています。

StoreGeneratedPattern = Computedただし、フィールドを設定すると、挿入時にデフォルト値が使用されますが、デフォルト値のみ使用されます。独自の値を指定すると ( であってもUpdate)、その値は無視されるようです。

基になるデータベースに変更を加えずに、このシナリオを機能させる方法はありますか?

私がフォローしているプロセスの例:

var myEntity = databaseSession.MyEntities.Single(x => x.EntityID = 123);
myEntity.SomeField = 1;
databaseSession.SaveChanges();

SomeFieldこの場合、タイプint?であり、に設定されていますStoreGeneratedPattern = Computed

EFProf を使用すると、次のような SQL クエリが発行されていることがわかります。

update [dbo].[MyEntities]
set    @p = 0
where  ([EntityID] = 123 /* @0 */)

追加:

databaseSession.ObjectStateManager.ChangeObjectState(myEntity, System.Data.EntityState.Modified);

テーブル内のすべてのフィールドを更新する update ステートメントが生成されますが、重要なことに、これには次のように設定されているフィールドは含まれません。StoreGeneratedPattern = Computed

4

1 に答える 1