4

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->ユーザーが提案者
リクエストの場合->ユーザーが受信者の場合

それでも問題は、新しい「友達リクエスト」を追加する方法とそれらを削除する方法です。

4

1 に答える 1

0

もちろん、経験豊富な EF ユーザーとしての Slauma は、最初から正しかったのです。Friends テーブルにキーがないと機能しません。前に書いたように、要素の追加/削除が正常に機能するようになりました。通常のリストと同じように使用してください。自分の間違いから学びましょう:)

于 2012-09-25T18:01:10.277 に答える