1

自己参照の作成に問題があります。

私はこのようなクラスを持っています

 public class User
{


    [MaxLength(50, ErrorMessage = "")]
    [Required(ErrorMessage = "")]
    public string FirstName { get; set; }

    [MaxLength(50, ErrorMessage = "")]
    [Required(ErrorMessage = "")]
    public string LastName { get; set; }

    [Key]
    [Required(ErrorMessage = "")]
    [MaxLength(20, ErrorMessage = "")]
    public string UserName { get; set; }

    [Required(ErrorMessage = "")]
    [MaxLength(20, ErrorMessage = "")]
    public string Password { get; set; }

    [ForeignKey("ParentUser")]
    public string ParentUserName { get; set; }
    public User ParentUser { get; set; }

    public  ICollection<User> SubsetUsers { get; set; }     

}

Fluent API を使用して自己参照関連付けを構成します。

modelBuilder.Entity<User>()
    .HasOptional(a => a.ParentUser)
    .WithMany(a=> a.SubsetUsers)
    .HasForeignKey(a => a.ParentUserName);

ユーザーを編集してユーザー ( db.User.Find(SelectedUser.UserName)) を選択しようとすると、エラーが発生します。

多重度の制約に違反しています。関係「AutomationDataLayer.User_ParentUser」のロール「User_ParentUser_Target」の多重度は 1 または 0..1 です。

4

2 に答える 2

0

2 方向のマッピングを処理する必要があります。

modelBuilder.Entity<User>()
    .HasMany(a => a.SubsetUsers)
    .WithRequired(a => a.ParentUser)
    .HasForeignKey(a => a.ParentUserName);

modelBuilder.Entity<User>()
    .HasOptional(a => a.ParentUser)
    .WithMany(a=> a.SubsetUsers);
于 2013-09-01T07:17:18.937 に答える
0

この質問を見てください。そこの問題をあなたの問題に適用すると、同じ User が SubsetUsers コレクションに複数回追加されました。

于 2013-09-01T08:29:54.477 に答える