0

我有两节课:

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 的多对多关系,它只有两列,UserId 和 TagId。

现在假设我有 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 回答