0

トピックに関して、いくつかのエンティティは多重度の関係を持っています

私は自分の研究でこれらすべてを学びましたが、この例でEntity Frameworkを使用するなど、C#プログラミングで維持する必要がありますか?:

http://www.asp.net/web-forms/tutorials/getting-started-with-ef/the-entity-framework-and-aspnet-getting-started-part-1

これは、カスケードなどのエンティティの更新がどのように機能するのか、なぜそれが重要なのかについて混乱しているためです。

カテゴリ製品などの実際の生活では実際に関連しているにもかかわらず、エンティティが互いに独立していることをコーディングする方が簡単だと思います。

CRUDがこの関係でどのように機能するかを質問で簡単に示すことができますか?

4

1 に答える 1

1

Entity Frameworkとそのエンティティ、およびそれらのエンティティ間の関連付けにより、Framework自体(OR-Mapper)がすべての更新、削除、および挿入を処理するという利点があります。エンティティとエンティティ自体の間の関係を維持します。モデルを定義する必要があります。

あなたはいつでも手動の道を進み、それをすべて自分でコーディングすることができます。ただし、ほとんどの場合、エンティティをプロパティとそれらの間の関係で定義し、Entity Frameworkまたはその他のOR-Mapper(nHibernaterなど)にすべてを処理させることは、開発速度、保守性、および一貫性の点で大きなプラスになります。

エンティティを互いに分離して定義する場合、つまり、エンティティ間の関連付けを操作しない場合、あるオブジェクトから別のオブジェクトに移動することはできません。例を参照してください。

例a)関連付けが定義されている場合:

2つのエンティティ:orderとorderitem1つの注文には最大n個の注文アイテムを含めることができます。特定の注文から関連するすべての注文アイテムまでトラバース/ナビゲートできます。

var myOrder = Repository.FindOrderById(15);
var orderItems = myorder.OrderItems;

例b)関連付けが定義されていない場合:

2つのエンティティ:orderとorderitem関連付けが定義されていない場合、1つのエンティティから別のエンティティに移動することはできません。たとえば、すべての注文アイテムを個別にクエリする必要があります。

var myOrder = Respository.FindOrderById(15);
var orderItems = Repository.FindOrderItemsByOrder(15);

これは、エンティティがどのようにロードされるかを示しているのではありません。例bでは、注文と関連する注文アイテムをクエリするために、OR-Mapperはデータベースに対して2つのクエリを実行します。例aでは、2つのクエリでエンティティを遅延ロードするか、1つのクエリで積極的にロードするかを定義できます。アソシエーションを定義すると、関連するエンティティを熱心にロードするか、怠惰にロードするかを選択できます。

これは、一般的にEntity Frameworkの開始点として適しています:http: //msdn.microsoft.com/en-us/library/bb386876.aspx

これは、エンティティ間の関係がどのように機能し、どのようなオプションがあるかについての概要です。http: //msdn.microsoft.com/en-us/library/ee373856.aspx

于 2012-04-15T10:23:41.957 に答える