9

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

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

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

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

4

3 回答 3

8

我发现了问题。只有当父类没有 Nullable 字段作为键时,您才能创建关联。

所以这:

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

将导致此错误:

替代文字 http://www.singingeels.com/Articles/UserImage.aspx?ImageID=19ed54aa-9f4f-4d5c-ba18-4996509d2da7

...但是这个:

替代文字 http://www.singingeels.com/Articles/UserImage.aspx?ImageID=0e09affd-2134-4712-999b-7e792f6e081b

将完美地工作。

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

于 2008-11-21T18:55:52.883 回答
3

我现在正好在 DBML 中遇到这种情况,并且工作正常。

首要的关键

  • 可空 - 假
  • 主键 - 真
  • 服务器数据类型 - int NOT NULL IDENTITY
  • 类型 - int (System.Int32)

外键

  • 可空 - 真
  • 主键 - 假
  • 服务器数据类型 - Int
  • 类型 - int (System.Int32) (实际上在context.designer.cs文件中定义为Nullable)
于 2008-11-19T21:25:07.543 回答
0

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

在此处输入图像描述

编辑:由于我(显然)对断开的链接投了一些反对票,因为这个问题已有 6 年历史,而且我使用的主机没有幸存下来……这是一个更新的版本。

于 2008-11-19T21:38:22.680 回答