【问题标题】:Entity Framework: Column must be mapped although it does have a default value?实体框架:列必须映射,尽管它确实有默认值?
【发布时间】:2011-03-05 19:48:57
【问题描述】:

我正在尝试基于旧版 SQL Server 2008 数据库创建 Entity Framework 4 模型。由于模型将在 Web 服务中发布,因此我需要从模型的一个实体中省略一个名为 NewsletterSubscribed 的整数列。

在 EF 设计器中删除该列后,出现以下编译错误:

Error   59  Error 3023: Problem in mapping fragments starting at line 356:Column Users.NewsletterSubscribed in table Users must be mapped: It has no default value and is not nullable.
    C:\Users\Adrian\Documents\Sites\Zeiterfassung\Zeiterfassung\API\V1\EFModel.edmx 357 15  Zeiterfassung

但该列似乎绑定了一个默认值 0。我尝试对数据库运行此 SQL 语句:

ALTER TABLE [dbo].[Users] ADD  DEFAULT ((0)) FOR [NewsletterSubscribed]

但这也失败了:

消息 1781,第 16 级,状态 1,第 3 行 列已经有一个 DEFAULT 绑定到 它。消息 1750,级别 16,状态 0,行 3 无法创建约束。看 以前的错误。

所以要么该列没有默认值(在这种情况下,我不确定为什么我不能创建一个),或者实体框架没有看到它。怎么回事?

谢谢,

阿德里安

【问题讨论】:

    标签: sql-server tsql entity-framework


    【解决方案1】:

    使用 Visual Studio XML 编辑器而不是实体设计器打开 .edmx,并将 DefaultValue="0" 属性添加到 SSDL 中未映射的列。由于某些原因,这些不是从数据库生成的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 2017-10-23
      相关资源
      最近更新 更多