こんにちは、30 個のフィールドを持つテーブルを含む既存のデータベースがあります。テーブルを多くのモデルに分割して、必要なフィールドを取得/保存できるようにしたいと考えています。毎回データベースからオブジェクト全体を取得/保存するわけではありません。c# を使用します。
Code-First を使用する必要があると思います。誰かが例やチュートリアルのリンクを提供できますか?
ありがとう、
こんにちは、30 個のフィールドを持つテーブルを含む既存のデータベースがあります。テーブルを多くのモデルに分割して、必要なフィールドを取得/保存できるようにしたいと考えています。毎回データベースからオブジェクト全体を取得/保存するわけではありません。c# を使用します。
Code-First を使用する必要があると思います。誰かが例やチュートリアルのリンクを提供できますか?
ありがとう、
フィールドのサブセットをロードしたり、フィールドのサブセットを保持したりできるようにするために、テーブルを分割する必要はありません。両方の操作は、単一のエンティティにマップされたテーブル全体でも使用できます。
選択するには、投影を使用するだけです。
var data = from x in context.HugeEntities
select new { x.Id, x.Name };
プロジェクションで匿名型を使用することも、マップされていないクラスを使用することもできます。
更新の場合は、次を使用できます。
var data = new HugeEntity { Id = existingId, Name = newName };
context.HugeEntities.Attach(data);
var dataEntry = context.Entry(data);
dataEntry.Property(d => d.Name).IsModified = true; // Only this property will be updated
context.SaveChanges();
または:
var data = new HugeEntity { Id = existingId };
context.HugeEntities.Attach(data);
data.Name = newName;
context.SaveChanges(); // Now EF detected change of Name property and updated it
複数のエンティティを 1 つのテーブルにマッピングするには、非常に厳密な規則に従う必要があり、すべてのエンティティを 1 対 1 の関係で関連付ける必要があるテーブル分割でのみ可能です (また、最初にコードで分割テーブルごとに 3 つ以上のエンティティを使用すると問題が発生します)。または、階層ごとのテーブルの継承を使用します。この場合、それらのいずれも使用したくないと思います。