Sql server 迁移忽略了一个字段
我使用希望添加到数据库中的以下上下文进行了基于代码的迁移:Sql server 迁移忽略了一个字段,sql-server,entity-framework,Sql Server,Entity Framework,我使用希望添加到数据库中的以下上下文进行了基于代码的迁移: public class SignalRUserContext : DbContext { public SignalRUserContext() : base("DefaultConnection") { } public DbSet<SignalRUser> Users { get; set; } publ
public class SignalRUserContext : DbContext
{
public SignalRUserContext()
: base("DefaultConnection")
{
}
public DbSet<SignalRUser> Users { get; set; }
public DbSet<SignalRConnection> Connections { get; set; }
}
public class SignalRUser
{
[Key]
public string UserName { get; set; }
public ICollection<SignalRConnection> Connections { get; set; }
}
public class SignalRConnection
{
[Key]
public string ConnectionID { get; set; }
public string UserAgent { get; set; }
public bool Connected { get; set; }
}
及
在哪里
public Configuration()
{
AutomaticMigrationsEnabled = true;
ContextKey = "AlphaFrontEndSiteASP.Models.SignalRUserContext";
MigrationsDirectory = @"SignalRMigrations";
}
它创建了SignalRUser和SignalRConnection表,但在SignalRUser上,它没有在Connections列中包含这些表。它漏掉了。如果我在Connections上省略[Key],则会出现一个错误,即没有为Connections表定义键。我不需要这张桌子上的钥匙。如何修复此问题?在您的类中,它是对SignalConnection对象集合的引用。数据库没有集合字段的概念。SignalRConnection表应该有一个指向SignalRUser的FK。但不确定EF如何将字符串作为主键自动处理。但是按照惯例,您的模型设计假定子表将有一个FK to SignalRUser,而code first只会为您创建该字段,并在查询和更新时使用它。 您不应该在SignalRUser类中包含FK。EF应该能够在数据库模式中推断它
Update-Database -configuration AlphaFrontEndSiteASP.SignalRMigrations.Configuration -Verbose
public Configuration()
{
AutomaticMigrationsEnabled = true;
ContextKey = "AlphaFrontEndSiteASP.Models.SignalRUserContext";
MigrationsDirectory = @"SignalRMigrations";
}