1

での役割に有効ではありません、私はUser.csを持っている:2参照 - 多重度は関係

[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オブジェクトを作成および変更しました。

しかし、私は自分のアプリケーションを起動したとき、私は私の「LOGDB」(DbContext由来)Database.Initialize(真)関数呼び出しにこのエラーが表示されます。

User_ModifiedBy_Target:多重度が役割では有効ではありません 'User_ModifiedBy'の関係に 'User_ModifiedBy_Target'があります。 依存ロールのプロパティはキーのプロパティではないため、上位の は、依存ロールの多重度の境界が「*」でなければなりません。

私は多くのことを試しましたが、私が望む結果が得られていないようです。

誰でも正しい方向に向けることができますか?

答えて

0

残念ながら、あなたは、このビットを行うために離れたデータ注釈からステップする必要があります(データ注釈を、可能であれば):またint?としてCreatedByIdModifiedByIdを定義することもできます

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<User>().HasRequired(u => u.CreatedBy).WithMany(); 
    modelBuilder.Entity<User>().HasRequired(u => u.ModifiedBy).WithMany(); 
} 

ので、彼らがすることができnullable、またはあなたの最初のユーザーを作成することはできません!

関連する問題