LINQ to SQL:为什么我不能拥有零到多基数

时间:2010-01-05 03:02:00

标签: c# .net linq-to-sql

我在我的数据库中创建了一个外键关系,以便在这种情况下我可以访问另一个表作为属性 House.Area

现在,如果我创建 House 对象并将 Area 设为null,我会在SubmitChanges()上收到以下异常:

  

试图删除区域和房屋之间的关系。但是,其中一个关系的外键(House.AreaID)不能设置为null。

好的,我上面的例子有点简单,但下面的评论让我觉得我应该给出一个更好的例子

“House”表有一个名为CityID的列映射到“City”表,在CityID上连接为FK,CityID不能为空

“House”表还有一个名为AreaID的列映射到连接CityID和AreaID的“Area”表,但AreaID可以为null。

House总是需要有1个城市。 1个城市可以有很多房子。 房子可以是零或1区。 1个区域可能有零个或多个房屋。

我更新了 House.City =新城市(....); House.CityID确实得到一个值< - checked

错误更新

  

试图删除区域和房屋之间的关系。但是,其中一个关系的外键(House.CityID,House.AreaID)不能设置为null。

除非更新区域覆盖可以解释错误的CityID值。请评论。任何方式?

3 个答案:

答案 0 :(得分:3)

您的数据库看起来不允许该字段为空。在SQL Server企业管理器(或您正在使用的任何数据库工具)中加载House表,并检查AreaID字段是否允许空值

答案 1 :(得分:0)

       / \_
      /   \|
     /     \
    /       \
    ---------
    | house |
    ---------

前屋必须包含区域

答案 2 :(得分:0)

我同意猎户座的回应。此错误消息不是LINQ错误,而是数据库提供程序错误。请记住,LINQ只是后端提供程序之上的查询语言层。