0

私は2つのクラスを持っています:

public class User
{
    public int Id {get;set;}
    public string Username {get;set;}

    [InverseProperty("Users")]
    public virtual ICollection<Tag> Tags {get;set;}
}

public class Tag
{
    public int Id {get;set;}
    public string Title {get;set;}

    [InverseProperty("Tags")]
    public virtual ICollection<User> Users {get;set;}
}

これにより、UserTags と呼ばれる多対多の関係に似た 3 番目のテーブルが明らかになり、UserId と TagId の 2 つの列しかありません。

ここで、100.000 のユーザーと 100.000 のタグがあり、平均して各 Eser は 1.000 のタグと関係があるとします。その前にすべてのタグをロードすることなく、特定の User.Tags コレクションから単一のタグを削除したいと考えています。

それを行う最も速い方法は何ですか?

4

1 に答える 1

6

これを試して:

// Create dummy objects for existing user and tag
var user = new User { Id = existingUserId };
var tag = new Tag { Id = existingTagId };
user.Tags.Add(tag);

// Start tracking user and related tag as unchanged
dbContext.Users.Attach(user);
// Remove relation between user and tag
user.Tags.Remove(tag);
dbContext.SaveChanges();
于 2013-01-07T08:58:20.943 に答える