0
所以,我必須從另一個數據庫導入表。該表使用自己的密鑰進行自引用,但我無法相信該密鑰,特別是因爲我輸入的表將用於多個數據集。ASP樣板(EF) - 流利的API - 自參照表,不使用主鍵
我使用實體框架和代碼第一流利的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」被假定爲任何和所有表的主鍵。
似乎並沒有得以順利。運行時,實體框架出錯,它正在查找Person_personid列,並且該列名稱不存在。我可以將表中的列重命名爲Person_personid,但是接下來我將不得不重構我的導入工具... – Salteris 2014-12-11 00:50:26
hmm ..我只是用示例代碼對它進行了測試,似乎工作正常。使用您的樣品添加類的映射如上創造兩個人的父母和孩子,並沒有錯誤..一切都正確保存.. – amuz 2014-12-11 01:06:37
OK,那麼這是一個ABP問題。我已將其轉發給創作者,以查看代碼中是否有任何內容來處理這種情況。 我會發布任何他可能會給的答案,謝謝。 – Salteris 2014-12-11 15:59:36