0
UPDATE: 我更新了類看起來更像我的實際模型。當我從文檔基礎實體中刪除可分配屬性時,一切正常。在Entity Framework 4.1中使用外鍵的抽象屬性?
像這樣可能在EF 4.1中映射?
public abstract class Entity
{
public Guid Id {get;set;}
}
public abstract class Assignable:Entity
{
}
public class Contact: Assignable
{
public string Name {get;set;}
}
public class Partner: Assignable
{
public string Area {get;set;}
}
public abstract class Document: Entity {
public Guid AssignedToId {get;set}
public Assignable AssignedTo {get;set;
}
public class Submittal: Document
{
public string SomeProperty {get;set;}
}
映射:
public class EntityConfiguration<TEntity> : EntityTypeConfiguration<TEntity>
where TEntity : Entity
{
protected EntityConfiguration()
{
HasKey(e => e.Id);
Property(e => e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
}
public class AssignableEntityMapping<TEntity>: EntityConfiguration<TEntity> where TEntity: Assignable
{
}
public class DocumentEntityMapping<TEntity>: EntityConfiguration<TEntity>
{
public DocumentEntityMapping()
{
HasOptional(e => e.AssignedTo).WithMany().HasForeignKey(e => e.AssignedToId);
}
}
public class ContactMapping: AssignableEntityMapping<Contact>
{
....
}
public class PartnerMapping: AssignableEntityMapping<Partner>
{
....
}
public class SubmittalMapping: DocumentEntityMapping<Submittal>
{
....
}
如果這是可能怎樣安裝的映射,使得AssignedToId是一個外鍵的混凝土實體之一?我爲Document實體創建了一個映射,並且出現錯誤:「屬性'Id'不是類型中的聲明屬性...」我猜這是因爲EF不知道如何區分AssignedToId引用的內容?
你根本不需要映射,它只是與約定一起工作。你創建的地圖是什麼? – Slauma 2012-02-02 15:21:53
@Slauma:我更新了我的問題。我想我可能需要將可分配表與FKs分配給屬於Type Assignable的任何屬性。也許? – DDiVita 2012-02-02 16:07:22
映射代碼甚至無法編譯,特別是對於'DocumentEntityMapping'。而'Document'有一個重複的'Id'。你使用TPH還是TPT繼承?我試圖重現你的例外,但我沒有能力。 – Slauma 2012-02-02 17:00:49