我有审计字段的复杂类型
我的复杂类型:
[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中的外键映射
类似的东西:
[ForeignKey("CreatorUserId")] // --> should point to AuditData.CreatorUserId
public virtual User CreatorUser { get; set; }
因为CreatorUserId将是每个实体的属性,但EF不知道它。 Mybe有流畅的API解决方案吗?
答案 0 :(得分:3)
复杂类型是实体类型的非标量属性,可以在实体中组织标量属性。与实体类似,复杂类型由标量属性或其他复杂类型属性组成。由于复杂类型没有键,因此除了父对象之外,实体框架不能管理复杂类型对象。
由此可见,复杂类型不能参与实体之间的任何关系,因此它们不能包含外键