c# - LINQ 到 SQL : Why can't I have a Zero to Many Cardinality

标签 c# .net linq-to-sql

我在数据库中创建了一个外键关系,以便在本例中可以将另一个表作为属性访问House.Area

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

An attempt was made to remove a relationship between a Area and a House. However, one of the relationship's foreign keys (House.AreaID) cannot be set to null.

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

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

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

House 始终需要有 1 个城市。 1个城市可以有很多房子。 房屋可以位于 0 或 1 区域。 1 个区域可能有零个或多个房屋。

我更新了 House.City = 新城市(....); House.CityID 确实获得了一个值<-已检查

错误更新

An attempt was made to remove a relationship between a Area and a House. However, one of the relationship's foreign keys (House.CityID, House.AreaID) cannot be set to null.

除非更新区域覆盖了 CityID 的值,这可以解释错误。请评论。有什么办法吗?

最佳答案

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

关于c# - LINQ 到 SQL : Why can't I have a Zero to Many Cardinality,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2003904/

相关文章:

c# - Excel 加载项 (C#) - 如何处理用户设置?

c# - 将数据表加载到数据集中的现有表

c# - WCF 契约(Contract)更改 IsRequiredMessage

c# - WPF框架如何处理MVVM中属性的循环更新?

java - 如何用Java代码重写或转换C#代码?

c# - Windows.Forms.Panel 32767 大小限制

c# - 具有 LinQ 相关查询的 MySQL Entity Framework 未执行

c# - 使用数据源时,如何正确地将数据库操作与 c# 中的 gui/逻辑分开?

c# - Loop C# - 在文本框中使用变量

linq-to-sql - 具有多个条件的FirstOrDefault