我正在使用Visual Studio 2008,C#,LINQ to SQL,並使用datbase dbml GUI編輯器創建數據庫。我想創建一個1對多的關係,但在我的情況下,1對象有2個主鍵。使用GUI edtior我創建的關聯,但在創建程序運行和數據庫的時候,我得到的錯誤:有多個外鍵的Linq-To-SQL關聯問題
「被引用的表必須有主或候選鍵[FK名稱= Screen_Pixel。」
在DBML創建的XML樣子:
<Table Name="Screen">
<Column Name="PKA1" Type="System.Int64" IsPrimaryKey="true" CanBeNull="false" UpdateCheck="Never" />
<Column Name="PKA2" Type="System.Int32" IsPrimaryKey="true" CanBeNull="false" UpdateCheck="Never" />
<Association Name="Screen_Pixel" Member="Pixels" ThisKey="PKA1,PKA2" OtherKey="PKB1,PKB2" Type="Pixel" />
</Table>
<Table Name="Pixel>
<Column Name="PKB1" Type="System.Int64" IsPrimaryKey="true" CanBeNull="false" UpdateCheck="Never" />
<Column Name="PKB2" Type="System.Int32" IsPrimaryKey="true" CanBeNull="false" UpdateCheck="Never" />
<Column Name="PKB3" Type="System.Int32" IsPrimaryKey="true" CanBeNull="false" UpdateCheck="Never" />
<Association Name="Screen_Pixel" Member="Screen" ThisKey="PKB1,PKB2" OtherKey="PKA1,PKA2" Type="Screen" IsForeignKey="true" />
</Table>
在C#代碼所生成的關聯被:
[Association([email protected]"Screen_Pixel", [email protected]"_Screen", [email protected]"PKA1,PKA2", [email protected]"PKB1,PKB2", IsForeignKey=true)]
[Association([email protected]"Screen_Pixel", [email protected]"_Pixels", [email protected]"PKB1,PKB2", [email protected]"PKA1,PKA2")]
任何想法?
我是不是該數據庫的原作者,這是數據庫是怎麼寫的。我曾希望沒有這樣做,因爲它更簡單,更直觀,讓多個外鍵定義的對象。如果星期一我還沒有聽到任何更多的回覆,我會盡力迴應。 – John 2011-01-07 22:35:19