在SQL中,我会告诉数据库外键约束是什么。
但是流利的EF6显然无法指定在绑定集合时使用哪个列。
是不是可以告诉DbModelBuilder究竟是哪个列绑定关系?或者它是否始终要求成为主键?
Table_Person
id int // pkey. Multiple people records
UniqueID int // the unique person
sometext varchar(256) // database therefore tracks changes to this, since unique person can have many records (pkeys).
Table_Address
id int //pkey
fk_unique int // should map to UniqueID of person, NOT the pkey.
line1 varchar(512)
state varchar(64)
etc
一个独特的人有很多记录,他们的uniqueID(不是pkey)有很多相关的地址。实际结构要复杂得多。但我正在寻找一种从根本上做到这一点的方法......
非常希望在ICollection<Address> Addresses
模型中拥有Persons
。但是为代码优先迁移启用这样的东西......似乎不可能?
是的我可以Add-Migration
然后手动修改生成的代码/ sql。但这难道不是这一点吗?或者这是常见做法吗?
答案 0 :(得分:1)
如果您能够修改数据库架构,您可以将人们的UniqueID放入他们自己的名为&#34; Person&#34;并将现有表重命名为&#34; PersonVersion&#34;。然后让FK成为新的&#34; Person&#34;表格&#34; PersonVersion&#34;和&#34;地址&#34;。最后,在应用程序代码中创建Person,PersonVersion和Address模型,EF应该没有问题地绑定。