使用EF 4.0代碼只是我想在抽象類和普通類之間進行關聯。EF 4.0代碼只從摘要到派生的關聯
我有類 '項目', 'ContentBase' 和 '測試'。
「ContentBase」是抽象的,「測試」提煉出來的。
「ContentBase」有一個屬性「項」鏈接到「項目」的一個實例。
所以這是Test.Item「或從「ContentBase」派生的任何類有一個「項目」導航屬性。
在我的數據庫中,Test的每條記錄都有一個與Item匹配的記錄。
public class Item
{
public int Id { get; set;}
}
public abstract class ContentBase
{
public int ContentId { get; set;}
public int Id { get; set;}
public Item Item { get; set;}
}
public class Test : ContentBase
{
public string Name { get; set;}
}
現在一些初始化代碼
public void SomeInitFunction()
{
var itemConfig = new EntityConfiguration<Item>();
itemConfig.HasKey(p => p.Id);
itemConfig.Property(p => p.Id).IsIdentity();
this.ContextBuilder.Configurations.Add(itemConfig);
var testConfig = new EntityConfiguration<Test>();
testConfig.HasKey(p => p.ContentId);
testConfig.Property(p => p.ContentId).IsIdentity();
// the problem
testConfig.Relationship(p => p.Item).HasConstraint((p, q) => p.Id == q.Id);
this.ContextBuilder.Configurations.Add(testConfig);
}
這給出了一個錯誤: 的關鍵是註冊了派生類型 '測試'。密鑰必須註冊爲根類型'ContentBase'。
無論如何,我嘗試我得到一個錯誤。我做錯了什麼?