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";
        }