2015-10-11 3 views
6

Ich habe komplexen Typen für Audit FelderEF-Kodex Erste Navigationseigenschaft Fremdschlüssel in komplexem Typ

Mein komplexer Typ:

[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; } 
} 

Meine Basisentität (alle andere inherti dieses) hat Auditdata Eigenschaft:

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 
} 

Ich habe 2 Navigationseigenschaften CreatorUser und ModifierUser. Ich weiß, man kann Navigationseigenschaft in Complex hat aber meine Navigationseigenschaft auf Unternehmen mit Fremdschlüsseln in complex

so etwas wie abgebildet wird:

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

becouse CreatorUserId wird in jeder Einheit sein Eigentum, aber EF ist nicht dessen bewusst. Mybe gibt es eine Lösung in fließenden API?

Antwort

3

The official documentation sagt:

Komplexe Typen nicht-skalare Eigenschaften von Entity-Typen sind, die skalaren Eigenschaften ermöglichen in Einheiten organisiert werden. Wie Entitäten bestehen komplexe Typen aus Skalareigenschaften oder anderen Eigenschaften des komplexen Typs. Da komplexe Typen keine Schlüssel haben, können komplexe Objekttypen vom Entity Framework nicht vom übergeordneten Objekt verwaltet werden.

Daraus folgt, dass, dass komplexe Typen in allen Beziehungen zwischen den Unternehmen, die nicht teilnehmen können, so können sie keine Fremdschlüssel enthalten

Verwandte Themen