我有一个刚刚开始使用EF迁移的项目。定位迁移源
存在初始迁移和额外的手动编辑迁移,该迁移定义了索引视图。没有其他迁移。
我最近添加了一个属性到一个类。当我创建一个新的模式时,该属性被创建。但是,我不明白为什么会创建它,因为在任何迁移中都没有提及该属性。
如果我搜索整个源代码文件夹(包含子文件夹,。)以提供该属性名称,它不会出现在任何EF迁移代码中(它只出现在定义它的类中,并且在访问该属性的几行代码中)。
当我在两个现有迁移的Up()方法的开始和结束处设置断点时,我可以看到,通过初始迁移(在SSMS中验证)创建的表没有附加属性,而且该属性在最后一次Up()迁移结束时还不存在。在控制离开上次迁移后的某个时间,某些代码会在数据库中为此其他属性创建一个列。
要尝试跟踪这一点,我将这个新属性手动编辑到初始迁移中。现在,在上次迁移的Up()方法退出后,我得到一个SqlException
每个表中的列名必须是唯一的。表'dbo.MyTable'中的列名'MyNewProperty'被多次指定。
在我的DbContext的构造函数中。
堆栈跟踪仅显示实例化DbContext的代码。
如何追踪此额外迁移的来源?
是否启用自动迁移?在'Migrations'文件夹中,你应该有一个'Configuration'类,看看'AutomaticMigrationsEnabled'的构造函数。 – Lukazoid 2014-09-10 19:59:43
@Lukazoid:是的,自动迁移已启用。 – 2014-09-10 20:08:24
那么这将是新列的来源,自动迁移意味着Entity Framework将自动将您的域实体上的任何新属性映射到SQL列。 – Lukazoid 2014-09-10 20:11:32