第二个表关联代码第一次迁移

时间:2015-12-16 21:44:17

标签: c# asp.net-mvc entity-framework

如何首先使用EF 6代码添加第二个表关联?我有一个简单的数据库用于注册计算机。部分代码是:

public class Person {
    public virtual int Id { get; set; }
    public virtual string FirstName { get; set; }
    ...
    public virtual ICollection<Computer> Computers { get; set; }
}
public class Computer {
    public virtual int Id{ get; set; }
    public virtual string Hostname { get; set; }
    ...
}

Update-Database使用Computers中的PersonId列按预期生成表。然后,软件要求发生变化(相信?),除了每台计算机的所有者之外,我还需要一个主要联系人。所以我将计算机更新为:

public class Computer {
    public virtual int Id{ get; set; }
    public virtual string Hostname { get; set; }
    ...
    public virtual Person Contact { get; set; }
}

然后运行Add-Migrations并获取以下内容:

public override void Up() {
    RenameColumn(table: "dbo.Computers", name: "Person_Id", newName: "Contact_Id");
    RenameIndex(table: "dbo.Computers", name: "IX_Person_Id", newName: "IX_Contact_Id");
}

这是联系我的所有者领域的劫持!我仍然需要那个。

我确信正确的答案是RTM,但是M很大,这是一个简单的项目,没有时间。如果有人有一个简单的答案让我克服这个障碍,或者链接到解释这个的文档的正确部分,我将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

{{1}}

但我并非100%确定它会正确理解ICollection。但至少你可以试试。

更新:我刚试过它,对我来说似乎没问题。对于您的情况,您可以避免使用&#39; OwnerId&#39;并为联系人添加新的外键。