C# 代码优先实体框架在模型没有';不改变

C# 代码优先实体框架在模型没有';不改变,c#,entity-framework-6,automatic-migration,C#,Entity Framework 6,Automatic Migration,我有以下类(继承自BaseEntity,它只有一个int-Id属性): 它由以下类映射: public class UserMap : EntityTypeConfiguration<User> { public UserMap() { HasKey(t => t.Id); Property(t => t.Created); Property(t => t.CustomData); Pr

我有以下类(继承自
BaseEntity
,它只有一个
int-Id
属性):

它由以下类映射:

public class UserMap : EntityTypeConfiguration<User>
{
    public UserMap()
    {
        HasKey(t => t.Id);
        Property(t => t.Created);
        Property(t => t.CustomData);
        Property(t => t.Email);
        Property(t => t.FailedLogInAttempts);
        Property(t => t.FirstName);
        Property(t => t.LastIpAddress);            
        Property(t => t.LastLogon).IsOptional();
        Property(t => t.LastName);
        Property(t => t.LockedOut);
        Property(t => t.Password);            
    }
}
我还使用以下内容自定义了我的迁移配置,以便迁移是自动的:

public Configuration()
{           
    AutomaticMigrationsEnabled = true;     
}
我确信这是由于我做了一些愚蠢的事情,但由于不是每次我清理=>重建=>运行项目时都会发生这种情况,我发现很难找到问题所在

重述:

  • 我有一个未更改的模型(包括名称空间等,我创建的类中模型的属性类型等)
  • 有时,当我运行项目时,会删除并重新创建与此模型相关的表
如果有人能帮我找到问题的根源,我将不胜感激。如果你需要我发布更多的代码,请让我知道

谢谢。

你可以换衣服

AutomaticMigrationsEnabled = false;
然后,仅当使用指向实体项目的控制台对模型进行更改时,才更新模型:

add-migration [Migrator_Name]
update-database

问题是,我的模型分布在多个程序集上,因此它不会拾取该程序集之外的模型。此外,我仍然会发现模型与DB错误不匹配?我还没有处理过这种情况,但您可以尝试逐个更新每个程序集的每个模型,看看是否有效。您可以发布MigrateDatabaseToLatestVersion类的代码吗?要确保您的类不是从
DropCreateDatabaseAlways
DropCreateDatabaseIfModelChanges
派生的。Hi@DipenShah该类只是标准的
System.Data.Entity.MigratedDatabaseToLateStVersion
类。完全忘记了那个!您是否有可能创建一个小项目来复制该问题。我用您指定的类创建了一个小项目,但它的行为与预期的一样,您是否尝试添加
自动迁移DataLossAllowed=false?您是否有可以发布的
Seed()
方法?您正在检查是否通过“反复对表发送select查询”来删除/重新创建表!!?为什么?您的表中没有任何数据吗?如果没有丢失数据,则不会删除/重新创建该表。
AutomaticMigrationsEnabled = false;
add-migration [Migrator_Name]
update-database