【发布时间】: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