所以,我有以下 3 个类(class):
User.cs
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public virtual Timezone Timezone { get; set; }
public virtual ICollection<UserChannel> UserChannels { get; set; }
}
Channel.cs
public class Channel
{
public int Id { get; set; }
[Column("Channel")]
public string Name { get; set; }
}
UserChannel.cs
public class UserChannel
{
public int Id { get; set; }
public virtual User User { get; set; }
public virtual Channel Channel { get; set; }
}
UserChannel
是User
和Channel
之间的媒介。
UserChannels
表如下所示:
+----+--------+-----------+
| Id | UserId | ChannelId |
+----+--------+-----------+
UserId
和 ChannelId
都是 User
和 Channel
类的外键。
现在,要获取哪些 channel
属于用户,我必须编写如下内容:
using var context = new TwitchContext();
var me = context.Users.FirstOrDefault(x => x.Id == 1);
var myChannels = me.UserChannels.Select(x => x.Channel);
有没有办法可以直接获取 Channel
集合,而不是使用 UserChannel
?
最佳答案
根据当前路线图,在 EF Core 5 发布之前,不引用联接表/实体的多对多关系将不可用:
此问题跟踪功能请求:
https://github.com/dotnet/efcore/issues/19003
它包含在 EF Core 5.0.0 里程碑中。
EF Core 5 计划于 2020 年 11 月发布。
关于c# - 我将如何在 EF Core 中创建这种多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60340064/