所以我必须从另一个数据库中导入一个表。该表使用自己的密钥进行自引用,但我不能信任该密钥,特别是因为我要导入的表将用于多个数据集。
我正在使用实体框架和代码优先流利的 api,但有一段时间寻找解决此问题的方法。
这是我的 POCO 类(简化为仅需要的数据点):
public class Person
{
public virtual int Id { get; set; }
public virtual int personid { get; set; }
public virtual int? parentid { get; set; }
public virtual Person parent { get; set; }
public virtual ICollection<Person> children { get; set; }
}
如果我可以使用 Id,这将是一个简单的自引用表,但我必须使用 personid。我已经在这里设置了我需要的流畅 api 的想法,但 EF 一直在查看 Id。
modelBuilder.Entity<Person>()
.HasOptional(p => p.parent)
.WithMany(p => p.children)
.HasForeignKey(p => p.parentid)
.WillCascadeOnDelete(false);
使用 personid 作为唯一约束(尚未在 EF6.1.2 中实现)填充集合的任何解决方法?
我也在使用 Asp.NetBoilerplate,因此可以对我的实体、存储库等进行一些控制,但不推荐。即“Id”被假定为任何和所有表的主键。