c# - 我将如何在 EF Core 中创建这种多对多关系?
问题描述
所以,我有以下3个课程:
用户.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; }
}
频道.cs
public class Channel
{
public int Id { get; set; }
[Column("Channel")]
public string Name { get; set; }
}
用户频道.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 |
+----+--------+-----------+
对于and类, UserId
and都是ChannelId
外键。User
Channel
现在,要获取Channels
属于用户的内容,我必须编写如下内容:
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 月发布。
推荐阅读
- php - MySQL PDO 语句在每个 var 之后返回 \n
- ios - 从函数中传递常量 - Swift
- joomla - Joomla“致命错误:无法在第 0 行重新声明 jblogerror()”
- css - 使用 CSS 删除 Wordpress 标签列表中的分隔符逗号
- java - 在运行时引用继承类的对象类引用变量会发生什么?
- python - Django:为什么我的 Django 模型会出现“on_deleate”错误
- java - 我的天气应用程序得到响应但不显示它
- javascript - 无法从文件夹中获取随机类型的随机文件
- r - R中的嵌套/递归字符串插值?字符串::str_interp
- node.js - 如何使用Nodemailer触发通过我自己的Gmail帐户从我的网站向我自己的NodeJS中的Gmail帐户发送电子邮件?