如何首先使用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很大,这是一个简单的项目,没有时间。如果有人有一个简单的答案让我克服这个障碍,或者链接到解释这个的文档的正确部分,我将不胜感激。谢谢!
答案 0 :(得分:1)
尝试这样的事情:
{{1}}
但我并非100%确定它会正确理解ICollection。但至少你可以试试。
更新:我刚试过它,对我来说似乎没问题。对于您的情况,您可以避免使用&#39; OwnerId&#39;并为联系人添加新的外键。