【问题标题】:EF: Cannot insert NULL to columnEF:无法将 NULL 插入列
【发布时间】:2013-04-17 06:46:22
【问题描述】:

我在数据库中有下表:

数据库中的Apps 表中已有应用程序。 我将它们呈现给最终用户,他必须将项目添加到 AppsToDomains

我正在尝试将实体保存到该表:

private static void FillDomains(string[] domainsWls, EntityCollection<AppToDomains_V1> AppsToDomains, 
    Guid appGuid, Guid groupId ,bool isWhiteListed)
{
    foreach (var domain in domainsWls)
    {
        AppsToDomains.Add(new AppToDomains_V1()
                              {
                                  Domain = domain,
                                  IsWhiteListed = isWhiteListed,
                                  AppId = appGuid,
                                  GroupId = groupId,
                              });
    }
}

但得到以下错误:

{"无法将值 NULL 插入到列 'ClientAppID',表 'MamDB.dbo.Apps';列不允许空值。INSERT 失败。\r\n语句已终止。"}

怎么可能?因为我没有在 Apps 表中添加任何行

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    你必须找出什么是空的。根据您得到的异常,您发布的代码中没有问题的来源。保存更改时,您将保存所有更改。还有其他代码所做的更改在您发布的当前范围内不可见。

    搜索将记录添加到具有 ClientAppID 列的表的其他代码

    【讨论】:

    • 我编辑了我的帖子。见上文
    • @MichaelD 我认为你误解了这个问题。 Elad 正在向 AppToDomains_V1 表添加一条记录,但例外是 Apps 表不接受特定列中的空值。问题是 Apps 表中的新记录来自哪里以及如何修复它
    【解决方案2】:

    根据您的架构,它表明您不允许所有字段都为 null,这就是 EF 使其不可为空的原因。如果你强制在 EF 中存储 null 值,当你将数据保存到你的架构时,你仍然会遇到问题..

    【讨论】:

      【解决方案3】:

      您传入的参数之一可能具有 NULL 值。

       EntityCollection<AppToDomains_V1> AppsToDomains, 
          Guid appGuid, Guid groupId
      

      您需要调查这些对象并查看哪些与Apps 表相关并调查空值。

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 2014-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多