1

SQL Server データベースから EF (v4.0.30319) データ モデルを構築しています。各テーブルにはCreatedUpdatedデータベース トリガーによって設定されたフィールドがあります。

このデータベースは ASP.NET Web API アプリケーションのバックエンドであり、最近問題を発見しました。問題は、CreatedおよびUpdatedフィールドが api エンドポイントに渡されるモデルに入力されていないため、データベースに として書き込まれることNULLです。これにより、これらのプロパティのデータベースに既にある値が上書きされます。

EF データ モデルを編集して、エンティティからこれら 2 つの列を削除するだけでよいことがわかりました。それは機能し、日時は上書きされませんNULL。しかし、これは別の、それほど深刻ではありませんが、より厄介な問題につながります... 私のデータ モデルには、これらのプロパティを含むテーブルがたくさんあり、これらの 2 つの列を削除してすべてのテーブルを更新する必要があります。

データ モデル全体でエンティティの特定の列を手動で削除せずに無視するように EF に指示する方法はありますか?

4

1 に答える 1

1

私の知る限り、いいえ。データベースからモデルを生成すると、常にデータベース テーブルからすべてのフィールドが作成されます。まあ、それが主キーを持っている限り、それはそうです。

必要なフィールドのみを更新することは可能です。つまり、create メソッドと update メソッドに「Created」フィールドと「Updated」フィールドを含めないでください。ただし、その時点でこれらのフィールドがモデルに存在していなかった方がよいと思います。ある時点でモデル上のこれらのフィールドを見て、それらが DB に永続化されないことを覚えていないかもしれません。

create() および update() メソッドを呼び出すときに、これらのフィールドに日時を挿入するだけで調べることができます。次に、トリガーを捨てることができます。すべてのデータベース操作にクラス ライブラリを使用して、この機能を 1 か所にまとめたいと思うことは明らかです。それをきれいに保つために、あなたは知っていますか?

于 2012-08-08T00:05:06.487 に答える