在我的项目中,我希望为每个表记录一些事件,如下面的事件:
CreatedOn, CreatdBy,IsDeleted,DeletedBy,DeletedOn
为此,我创建了一个这样的ComplexType:
[ComplexType]
public class Log
{
public DateTime CreatedOn { get; set; }
public User CreatedBy { get; set; }
public Guid CreatorId { get; set; }
public bool IsDeleted { get; set; }
public User DeletedBy { get; set; }
public Guid? DeletedUserId { get; set; }
}
}
并在另一个表中使用,如下所示:
public class StoreMaster
{
//some fields
public virtual Log Log { get; set; }
}
我有这样的Fluent:
HasRequired(row => row.Log.CreatedBy).WithMany(row => row.StoreMasters).HasForeignKey(row => row.Log.CreatorId).WillCascadeOnDelete();
运行Project I时出现此错误:
表达式'row => row.Log.CreatedBy'不是有效的属性表达式。表达式应代表一个属性:C#:'t => t.MyProperty'VB.Net:'Punction(t)t.MyProperty'。
答案 0 :(得分:1)
我害怕你想要实现的目标是不可能的。首先是复杂类型只能包含基元属性,因此您无法在那里声明导航属性。第二件事是您在复杂类型中定义的标量属性不能用于关系的定义。您将复杂类型声明为属性的父对象是唯一可以管理它的人。