私はコメントと質問があります。 Entity Framework 4.0では、NorthwindのOrder_Detailsという2つの列(プライマリキーのみ)を使用すると、OrderとProductsの間のリンクテーブルなど、2つのテーブル間の多対多の関係にリンクテーブルが表示されませんリンクテーブルには、よくあるように、したがって、Northwindでは、Order-Product間のOrder_DetailsリンクテーブルでOrderIDとProductIDの両方を主キーとして使用する場合、多対多の関係では、これらの2つの列(主キー)のみが存在する場合、リンクテーブルは表示されませんOrder_DetailsでEF 4.0の多対多のリンクテーブルが不足しているか、機能がありませんか?
結果として、Entity Framework 4.0はリンクテーブルOrder_Detailsを表示せず、Intellisenseがこのリンクテーブルに多対多リレーションシップを表示するため、多対多リレーションシップリンクテーブルに挿入または作成できません。 EF 4に隠しリンクテーブルが表示されない場合、どのようにリンクテーブルの挿入または更新を行うのですか? 「あなたは今OOPで思考を始める必要があります」などの議論は私には印象的ではありません。 SQLは特定の構造を持ち、OOPはそのためのインターフェイスに過ぎないので、不器用なSQLクエリIMOではなくLINQ-to-entitiesを使用できます。
このバグを回避するためのヒントは、Silverlightの場合はhttp://forums.silverlight.net/t/159414.aspx/1です。これはWebサービスや他の.NETソリューションでも機能します。リンクテーブルに任意のタイプのダミー列を追加するだけです。
元の.edmxファイルを削除し、実際のデータベースに対して生成して新しい.edmxファイルを再構築します。
次に、intellisenseがリンクテーブルを表示し、Insert/Createと他の通常の操作を実行できます。例えば
、EF 4.0のインテリセンスは現在、リンクテーブルORDER_DETAILSが表示され、作成または(部分断片、省略するのtry/catchし、任意のロールバックオプション)などを挿入することができます。
using (aDBEntity context = new aDBEntity())
Order_Details newOrdDetails = new Order_Details();
newOrdDetails.OrderID = //some number here
newOrdDetails.ProductID = //some number here
context.AddToOrder_Details(newOrdDetails);
context.SaveChanges();
質問:この多対多のリンクテーブルがEF 4.0のバグや機能を示していないのはなぜですか?
もちろん、機能! –