0

こんにちは、30 個のフィールドを持つテーブルを含む既存のデータベースがあります。テーブルを多くのモデルに分割して、必要なフィールドを取得/保存できるようにしたいと考えています。毎回データベースからオブジェクト全体を取得/保存するわけではありません。c# を使用します。

Code-First を使用する必要があると思います。誰かが例やチュートリアルのリンクを提供できますか?

ありがとう、

4

1 に答える 1

1

フィールドのサブセットをロードしたり、フィールドのサブセットを保持したりできるようにするために、テーブルを分割する必要はありません。両方の操作は、単一のエンティティにマップされたテーブル全体でも使用できます。

選択するには、投影を使用するだけです。

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 つ以上のエンティティを使用すると問題が発生します)。または、階層ごとのテーブルの継承を使用します。この場合、それらのいずれも使用したくないと思います。

于 2012-07-04T16:15:34.880 に答える