LINQ to SQL - ForeignKey中的Nullable INT =“无法创建关联...”

时间:2008-11-19 20:25:44

标签: linq-to-sql foreign-keys associations

我有一个表,其主键是INT ...我有另一个表,它与第一个表有外键关系,但它是一个NULLABLE INT。

这是完全可以的,并且100%可以接受SQL ...但是LINQ to SQL抱怨不匹配的类型(“int to Nullable [int]”)。

错误消息:无法创建关联“Store_People”。属性没有匹配的类型:“PersonID”,“ID”。

如何解决这个问题,以便设计师停止对SQL的正确使用率100%大喊大叫?

3 个答案:

答案 0 :(得分:8)

我发现了问题。只有在父类没有Nullable字段作为键的情况下,才能创建关联。

所以,这个:

alt text http://www.singingeels.com/Articles/UserImage.aspx?ImageID=43d83ac4-707d-47fc-832c-588261e6a5d7

会导致此错误:

alt text http://www.singingeels.com/Articles/UserImage.aspx?ImageID=19ed54aa-9f4f-4d5c-ba18-4996509d2da7

......但是这个:

alt text http://www.singingeels.com/Articles/UserImage.aspx?ImageID=0e09affd-2134-4712-999b-7e792f6e081b

将完美运作。

这看起来像一个错误(或者至少是LINQ to SQL的愚蠢)......但除此之外,我喜欢它。

答案 1 :(得分:3)

我现在在DBML中确实存在这种情况,并且它运行正常。

主键

  • Nullable - False
  • 主键 - True
  • 服务器数据类型 - int NOT NULL IDENTITY
  • Type - int(System.Int32)

外键

  • Nullable - Trure
  • 主键 - 错误
  • 服务器数据类型 - Int
  • Type - int(System.Int32)(实际上在context.designer.cs文件中定义为Nullable)

答案 2 :(得分:0)

这是我扔在一起的东西。 Table2的Table1Id列是Table1的可为空的外键。我甚至投入了一些数据记录并测试了一些Linq查询......

enter image description here

编辑:因为我正在为破损的链接获得一些downvotes(显然)因为这个问题是6岁而且我使用的主机还没有幸存下来......这是一个更新版本。