2009-08-10 9 views
3

私はかなりのコミッショニングマネージャである仕事場でプロジェクトに取り組んでいます.LINQのItemテーブルをsqlに正しくリンクする方法を理解しているようです。複数のIDフィールドでオブジェクトをリンクするlinq to linq

私は(実際には異なるデータベースからそのようにデータベースビューでのみ、このアプリで読まれる)(とりわけ)

DepartmentID, CategoryID, ItemID 

やアイテムのテーブルを持っているパッケージの詳細テーブルを持っているにも持っていますこれら3つのフィールドは、これらの3つのフィールドとの関連付けを追加すると、PackageDetailクラスのプロパティオブジェクトとして追加されません。

アソシエーションに何か問題がありますか?すべての単一のものはうまく動作しています...

答えて

3

私は、LINQのツーSQLが適切に複合キーとの関連付けモデル化できることを信じていません。しかし、あなたはまだLINQのツーで複合キーでオブジェクトをロードすることができます

Is it beneficial to use multicolumn (composite) primary keys when using Linq to SQL?

を(シングル)キーとして匿名オブジェクトを使用してSQLクエリ:それは最も具体的な修飾子であるので、あなただけのItemIdを使用し、他の2を無視することができように

http://msdn.microsoft.com/en-us/library/bb399391.aspx

1

プライマリキーとしてマークされていますか?必要な列を主キーとして割り当てるようにしてください。これは正常に動作します。期待してください。

0

主キーと外部キーの関係でキーが正しく設定されていることを確認してください。それでも問題が解決しない場合は、複合キーに頼るのではなく、新しいキー列を追加することを検討できますか?

LINQ to SQLの最後のオプションは、通常、手動でXMLエディタでDBMLを更新します。次のように通常の単一キーの関係が表示されます:

<Association Name="Schedule_Profile" Member="Schedule" ThisKey="ScheduleID" Type="Schedule" IsForeignKey="true" /> 

はあなたの要素を自分で作成してみてください提案、および列のCSVリストにThisKeyを設定してみてください。 OtherKey属性も重要です。

0

は、それは見えます - 言い換えれば、 DepartmentおよびCategoryはitemIdによって完全に決定されます。

+0

実際、ItemIDは部門カテゴリごとに一意ではありません。 – dkarzon

0

このようなクエリでしたか?

var result = from table in dbContext.table1 join table2 in dbContext.table2 join new { table.DepartmentID, table.CategoryID, table.ItemID} equals new {table2.DepartmentID, table2.CategoryID, table2.ItemID} 
select table; 
+0

いいえ、私はlinqからSQLへの関連付けを意味し、2番目のテーブルは実際にはビューではなくテーブルです。 – dkarzon

関連する問題