2017-08-08 19 views
1

Entity Framework ASP.Netを使用しているコードで、最初に多対多のリレーションシップをコード内に作成したいのですが、同じテーブルのものです。多対多リレーションMVC ASP.NET

私はユーザーがいて、すべてのユーザーに自分の友人(ユーザーも)を作ってもらいたいのですが、コードの最初のデータベースにそのような関係を確立できません。

ここは私のクラスです。

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.Data; 
using System.Data.Entity; 
using System.Linq; 
using System.Net; 
using System.Web; 

namespace LMS.Model.Entites 

{ 
    public class user 
    { 
     [Key] 
     public int ID { get; set; } 
     [Required(ErrorMessage ="Please Insert your name")] 
     public string Name { get; set; } 
     [Required(ErrorMessage ="Please insert a valid username")] 
     public string User_Name { get; set; } 
     public string Adress { get; set; } 
     [DataType(DataType.Date)] 
     public string Birthday { get; set; } 
     [Required] 
     [EmailAddress] 
     public string E_Mail { get; set; } 
     [Required(ErrorMessage = "Please insert a valid password")] 
     [MinLength(9)]  
     [DataType(DataType.Password)] 
     public string Password { get; set; } 
     public string Authority { get; set; } 
     public virtual ICollection<user_Friends> friends { get; set; } 
    } 
} 

新しいテーブルを新しいテーブルにして多対多の関係にしようとしましたが失敗しました。

using LMS.Model.Entites; 
using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace LMS.Model 
{ 
    public class user_Friends 
    { 
     [Key] 
     public virtual user USER1 { get; set; } 
     [ForeignKey("USER1")] 
     public virtual int USER1_ID { get; set; } 
     [Key] 
     public user USER2 { get; set; } 
     [ForeignKey("USER2")] 
     public int USER2_ID { get; set; } 
    } 
} 
+0

「失敗しました」は問題の記述が不十分です。特定のエラーはありますか? –

答えて

1

クラスuser_Friendsで、あなたは前者のみで一つの基準がありuserクラスに2つの参照を持っています。 (友人のフルセットを取得するために、これらの二つの特性組合、あなたがしなければならない。この場合の)クラス間のエンドポイントの接続を完了するために、1以上の参照を追加します。

public class user 
{ 
    //other properties 
    [InverseProperty("USER1")] 
    public virtual ICollection<user_Friends> friendsSide1 { get; set; } 
    [InverseProperty("USER2")] 
    public virtual ICollection<user_Friends> friendsSide2 { get; set; } 
} 

public class user_Friends 
{  
    [Key] 
    [Column(Order = 0)] 
    [ForeignKey("USER1")] 
    public virtual int USER1_ID { get; set; } 
    public virtual user USER1 { get; set; } 

    [Key] 
    [Column(Order = 1)] 
    [ForeignKey("USER2")] 
    public int USER2_ID { get; set; } 
    public virtual user USER2 { get; set; } 
} 

また、あなたがすべてでuser_Friendsクラスなし(この方法あなたのソリューションを簡素化することができます対応するテーブルは暗黙のうちにEFによって作成されます)。

関連する問題