Entity framework 实体类型配置中的HasMaxLength值增加未完成迁移?
我有一个奇怪的例子,在Entity framework 实体类型配置中的HasMaxLength值增加未完成迁移?,entity-framework,ef-code-first,code-first,entity-framework-migrations,data-migration,Entity Framework,Ef Code First,Code First,Entity Framework Migrations,Data Migration,我有一个奇怪的例子,在EntityTypeConfiguration类中将HasMaxLength(仅供参考,从200增加到500)的值似乎对我创建的下一次迁移没有影响。显然,我希望对列的数据类型长度进行修改 发现这一点后,我尝试向模型中的相关属性添加MaxLength属性,但这对创建的迁移也没有影响。在这两种情况下,迁移都包含空的up和down方法 到目前为止,迁移工作一直完美无缺。我错过了什么 编辑 为了确认这一点,如果我添加了一个实体,那么我将按照预期使用相关的填充向上和向下方法进行迁移
EntityTypeConfiguration
类中将HasMaxLength
(仅供参考,从200增加到500)的值似乎对我创建的下一次迁移没有影响。显然,我希望对列的数据类型长度进行修改
发现这一点后,我尝试向模型中的相关属性添加MaxLength
属性,但这对创建的迁移也没有影响。在这两种情况下,迁移都包含空的up和down方法
到目前为止,迁移工作一直完美无缺。我错过了什么
编辑
为了确认这一点,如果我添加了一个实体,那么我将按照预期使用相关的填充向上和向下方法进行迁移
根据评论中的要求,以下是一些代码:
配置构造函数:
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
public ProjectNameContext()
: base("ProjectName")
{
Configuration.LazyLoadingEnabled = false;
}
DbContext构造函数:
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
public ProjectNameContext()
: base("ProjectName")
{
Configuration.LazyLoadingEnabled = false;
}
出于明显的原因,我不打算发布启动项目(UI)的整个配置,但连接字符串(工作正常)如下所示:
<add name="ProjectName" connectionString="server=.;database=ProjectName;Persist Security Info=False;MultipleActiveResultSets=true;Integrated Security=True" providerName="System.Data.SqlClient"/>
编辑2
我一直在试验并尝试引入一个
hascollumnname
,下一次迁移有用于列重命名的代码。如果我执行HasColumnName
并更新HasMaxLength
,那么下一次迁移只进行重命名,而不更改长度。非常奇怪 这个问题的答案似乎是将Entity Framework从6.1.0升级到6.1.1。这样做会导致创建一个迁移,其中包括对HasMaxLength
值的更改。我想这可能是巧合,但这是我能归因于迁移成功创建的唯一变化 可能在数据库中,长度已经有500,请确保第一个。您使用什么命令生成迁移?您是否使用了正确的上下文、启动项目、PMC中的默认项目、连接字符串等?数据库长度在原始值200不变。使用常见的添加迁移“MigrationNameHere”-projectname数据-startupprojectname Ui
。我已经打了很多次了,结果我记不清了,所以我认为不是这样的?请发布属于启动项目的配置构造函数、dbcontext构造函数和配置,请使用编辑按钮发布代码,未在注释中。根据请求添加了更多代码。可能在配置构造函数中未正确设置上下文,请转到数据库执行从数据库.dbo.选择ContextKey.\uu迁移历史记录
,然后尝试将此代码放入ContextKey=“TheValueYouSeeFromExecutingTheQuery”代码>配置的构造函数