ET 4.1で生成されたユーザーモデルを取得しました-最初にDBを作成しました:
public partial class User
{
public User()
{
this.Photos = new HashSet<Photo>();
this.Posts = new HashSet<Post>();
this.My_requests = new HashSet<User>();
this.Requests = new HashSet<User>();
this.FriendLeft = new HashSet<User>();
this.FriendRight = new HashSet<User>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public string Email { get; set; }
public string Project { get; set; }
public string City { get; set; }
public string Street { get; set; }
public string House_number { get; set; }
public string Apartment_number { get; set; }
public string username { get; set; }
public string Zip_code { get; set; }
public virtual ICollection<Photo> Photos { get; set; }
public virtual ICollection<Post> Posts { get; set; }
public virtual ICollection<User> My_requests { get; set; }
public virtual ICollection<User> Requests { get; set; }
public virtual ICollection<User> FriendLeft { get; set; }
public virtual ICollection<User> FriendRight { get; set; }
}
すべての「ユーザー」は、他の「ユーザー」を友達に招待できます。したがって、誰かがあなたを招待すると、彼は「リクエスト」に表示され、あなたが誰かを招待すると、彼は「My_requests」に表示されます。そのデータは「Friend_requests」テーブルに格納され、次のようになります。
ProposerId(col1)RecipientId(col2)
そして、両方の列はUserIdによってUserテーブルと関係があります-それは多対多です。
私の問題は、EFがそのテーブルのコンテキストを提供しないため、「Friend_request」から行を削除することです。代わりに、前に示したモデルを生成しました...
私はそのようなことを試みました:
User User2 = GetUserInfo(UserId2);
context.Users.Where(u => u.Id.Equals(UserId1)).SingleOrDefault().Requests.Remove(User2);
context.SaveChanges();
しかし、それはもちろん間違っています、それは私にエラーを与えました:
「EntitySet「Friends_Request」は要素DefiningQueryがあり、要素には要素がないため、更新できません。wchichはこの操作を処理できます。」
そして、私の質問は次
のとおりです。テーブル'Friend_Requests'に行を削除する方法と追加する方法は?
編集:
テーブルの関係:
そして、ETによって生成されたモデルでは、次のようになります
。My_requests->ユーザーが提案者
リクエストの場合->ユーザーが受信者の場合
それでも問題は、新しい「友達リクエスト」を追加する方法とそれらを削除する方法です。