如何在Entity framework中的多对多关系中通过id查询?
How to query by id in many to many relationship in Entity framework?
我有像这样的群组实体
public class Group
{
public string Id { get; set; }
public string Name { get; set; }
public string CategoryId { get; set; }
public ICollection<GroupTag> TagsLink { get; set; }
}
我有像
这样的标签实体
public class Tag
{
public string Id { get; set; }
public string Name { get; set; }
public ICollection<GroupTag> GroupLink { get; set; }
}
我映射了
public class GroupTag
{
public string GroupId { get; set; }
public Group Group { get; set; }
public string TagId { get; set; }
public Tag Tag { get; set; }
public byte Order { get; set; }
}
那么如何通过 groupId 检索组并通过 tagId 检索标签?
如果您使用的是 net core 5 或 6,您可以向 类 添加更多扩展:
public class Group
{
public string Id { get; set; }
public string Name { get; set; }
public ICollection<GroupTag> GroupTags { get; set; }
public string CategoryId { get; set; }
public virtual Category Category { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
public class Tag
{
public string Id { get; set; }
public string Name { get; set; }
public virtual ICollection<GroupTag> GroupTags { get; set; }
public virtual ICollection<Group> Groups { get; set; }
}
如果您已经创建了 dbcontext,您可以通过 groupId 获取一个组
var group= context.Groups
.Include(i=> i.Tags) // if you don't need tags, ommit this
.FirstOrDefault(i=> i.GroupId==groupId);
获取标签的方式相同
我有像这样的群组实体
public class Group
{
public string Id { get; set; }
public string Name { get; set; }
public string CategoryId { get; set; }
public ICollection<GroupTag> TagsLink { get; set; }
}
我有像
这样的标签实体 public class Tag
{
public string Id { get; set; }
public string Name { get; set; }
public ICollection<GroupTag> GroupLink { get; set; }
}
我映射了
public class GroupTag
{
public string GroupId { get; set; }
public Group Group { get; set; }
public string TagId { get; set; }
public Tag Tag { get; set; }
public byte Order { get; set; }
}
那么如何通过 groupId 检索组并通过 tagId 检索标签?
如果您使用的是 net core 5 或 6,您可以向 类 添加更多扩展:
public class Group
{
public string Id { get; set; }
public string Name { get; set; }
public ICollection<GroupTag> GroupTags { get; set; }
public string CategoryId { get; set; }
public virtual Category Category { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
public class Tag
{
public string Id { get; set; }
public string Name { get; set; }
public virtual ICollection<GroupTag> GroupTags { get; set; }
public virtual ICollection<Group> Groups { get; set; }
}
如果您已经创建了 dbcontext,您可以通过 groupId 获取一个组
var group= context.Groups
.Include(i=> i.Tags) // if you don't need tags, ommit this
.FirstOrDefault(i=> i.GroupId==groupId);
获取标签的方式相同