EF 4.0 コードのみを使用して、抽象クラスと通常クラスを関連付けたいと考えています。
クラス「Item」、「ContentBase」、および「Test」があります。
「ContentBase」は抽象的で、「Test」はそこから派生しています。
「ContentBase」には、「Item」のインスタンスにリンクするプロパティ「Item」があります。
そのため、「Test.Item」または「ContentBase」から派生したクラスには「Item」ナビゲーション プロパティがあります。
私のDBでは、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);
}
これによりエラーが発生します: 派生型 'Test' のキーが登録されています。ルート タイプ「ContentBase」のキーを登録する必要があります。
とにかく私はエラーが発生しようとします。私は何を間違っていますか?