我有一个User.cs:
[Table("Users")]
public class User : BaseUser, IBaseUser
{
[Key]
public override int Id { get; set; }
[ForeignKey("CreatedBy")]
public int CreatedById { get; set; } = 0;
public DateTime? CreatedOn { get; set; }
[ForeignKey("ModifiedBy")]
public int ModifiedById { get; set; } = 0;
public DateTime? ModifiedOn { get; set; }
public virtual User CreatedBy { get; set; } = null;
public virtual User ModifiedBy { get; set; } = null;
public bool IsDeleted { get; set; } = false;
}
我希望将CreatedBy和ModifiedBy导航属性添加到创建和修改此User对象的User对象。
但是,当我启动我的应用程序时,我在我的' LogDb'上收到此错误。 (派生自DbContext)Database.Initialize(true)函数调用:
User_ModifiedBy_Target :: Multiplicity在Role中无效 ' User_ModifiedBy_Target' in relationship' User_ModifiedBy'。因为 Dependent Role属性不是关键属性,鞋面 依赖角色的多样性的界限必须是' *'。
我尝试过很多东西,但似乎无法获得我想要的结果。
有人能指出我正确的方向吗? (如果可能,使用数据注释)
答案 0 :(得分:0)
不幸的是,你需要离开数据注释才能做到这一点:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().HasRequired(u => u.CreatedBy).WithMany();
modelBuilder.Entity<User>().HasRequired(u => u.ModifiedBy).WithMany();
}
您可能还希望将CreatedById
和ModifiedById
定义为int?
,以便它们可以为空,或者您永远无法创建第一个用户!