我正在使用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