【问题标题】:Entity Framework Code First Optional Property is mapped as Required实体框架代码优先可选属性映射为必需
【发布时间】:2015-04-27 14:12:15
【问题描述】:

我对 Code First 有疑问。我只是将项目从模型优先迁移到代码优先,我认为实体框架正在失去理智......这是我的课程(简化版):

public class MyClass
{
    // Key, other properties...

    public bool? MyNullBoolean { get; set; }

    public static void Configure(EntityTypeConfiguration<MyClass> myClass)
    {
        // Other configuration on other properties...
        myClass.Property(m => m.MyNullBoolean).IsOptional();
    }
}

这里有一些额外的信息给你:

  • 我在OnModelCreating()方法中调用Configure()方法。
  • 迁移已启用且自动模式设置为 false
  • 在我的迁移中我有MyNullBoolean = c.Boolean(nullable: false),所以EF 表现得像这个属性是必需的,这不像以前那样 见过。
  • 我以现有数据库 (dev) 为目标,其中包含数据,因此我无法“出于测试目的”执行迁移
  • 这与 Model First 中的模型完全相同,最后一个工作正常...

这是我尝试过的:

  • 在项目上禁用/启用 EF(删除项目和数据库中的迁移)
  • 重启VS
  • 以另一个数据库为目标(相同结构)
  • 保留未配置的属性(以便 EF 独自完成工作)

我想不通,我在 Internet 上一无所获。谢谢你们的帮助!

【问题讨论】:

  • MyNullBoolean属性上面的注释是什么意思?提示Key属性被应用到它上面?
  • @DavidG 没有。就是说那个类还有其他的属性
  • 一些问题: 1.您确定在您的数据库中 MyNullBoolean 是允许 null 的类型吗? 2.您是否尝试在不配置此属性的情况下运行程序?哪个错误?
  • @Chase 是的,我确定,我检查了多次,在从 Model First 迁移之前数据库已经存在。
  • 好的,第二个问题呢?

标签: c# entity-framework ef-code-first


【解决方案1】:

我认为 EF 已损坏,因为当我卸载它、清理解决方案、安装它、重建解决方案时,它可以工作。

所以 db 或我的模型没有问题。

【讨论】:

    猜你喜欢
    • 2011-08-06
    • 2012-01-09
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多