2015-10-11 21 views
6

私は、監査項目のための複合型を持っているEF-コードファーストナビゲーションプロパティ外部キー

マイ複合型:

[ComplexType] 
public class AuditData { 
    [Column("CreatorUserId")] 
    public int? CreatorUserId { get; set; } 
    public DateTime? CreationTime { get; set; } 
    [Column("ModifierUserId")] 
    public int? ModifierUserId { get; set; } 
    public DateTime? ModificationTime { get; set; } 
} 

は私のベースエンティティ(他のすべてのinhertiこれは)AuditDataプロパティがあります。

public abstract class Entity : IEntity, IAuditedEntity, INotifiedDbContextBeforeSave 
{ 

    // Summary: 
    //  Unique identifier for this entity. 
    public int Id { get; set; } 
    public bool IsActive { get; set; } 
    public int Old_Id { get; set; } 
    public string Old_TableName { get; set; }   
    [Timestamp] 
    public byte[] RowVersion { get; set; }   
    public AuditData AuditData { get; set; } 
    // can this 2 lines below work as navigation property with foreign key in complex type 
    public virtual User CreatorUser { get; set; } 
    public virtual User ModifierUser { get; set; } 

    //... other fields 
} 

私は2つのナビゲーションプロパティCreatorUserとModifierUserを持っています。 私のようなもの、あなたがComplexTypeの中でナビゲーションプロパティを持ってカント知っているが、実体上の私のナビゲーションプロパティは、complexTypeの

内の外部キーにマッピングすることができます。CreatorUserId becouse

[ForeignKey("CreatorUserId")] // --> should point to AuditData.CreatorUserId 
    public virtual User CreatorUser { get; set; } 

は、すべてのエンティティ内のプロパティになりますが、EFではありませんそれを認識して。 Mybeには流暢なAPIのソリューションがありますか?

答えて

3

official documentationは言う:

複合型は、エンティティ内で編成されるスカラプロパティを有効エンティティ型の非スカラプロパティです。エンティティと同様に、複合型はスカラ型のプロパティまたは他の複合型のプロパティから成ります。複雑な型にはキーがないため、複雑な型のオブジェクトは、親オブジェクトとは別にEntity Frameworkで管理することはできません。その複雑なタイプは、エンティティ間のいずれかの関係に参加することはできませんので、彼らは外部キー

を含むことができないということになる

関連する問題