更新: 私のクラスは実際のモデルのように更新されました。ドキュメントベースエンティティからAssignableプロパティを削除すると、すべてが機能します。要約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は、具体的なエンティティの1への外部キーがあるように、どのように私のセットアップのマッピングを行いますか? Documentエンティティのマッピングを作成しました。エラーが発生しました。「プロパティ 'Id'は型の宣言されたプロパティではありません...」と推測しています.EdはAssignedToIdが何を参照するかを区別する方法を知らないためです?
マッピングはまったく必要ではありません。慣習でのみ動作します。あなたが作成したマッピングは何ですか? – Slauma
@Slauma:私は自分の質問を更新しました。私はFTを割り当て可能な任意のプロパティに割り当てることができるかもしれないと思います。多分? – DDiVita
マッピングコードは、特に 'DocumentEntityMapping'ではコンパイルされません。 'Document'には重複した' Id'があります。 TPHまたはTPT継承を使用していますか?あなたの例外を再現しようとしていましたが、私はできませんでした。 – Slauma