不知道如何使用这里显示东西的高级功能,所以请原谅;-)
数据库结构为
User --> UserOwnerR <-- Owner
我也有几个支持结构(例如属于特定所有者的地址)。
我需要找到一个特定用户可以访问的所有地址,因为它属于一个/多个所有者,但是不是地址,用户与之有所有者关系。
在EF Core 5+中,n:m关系不需要连接表就可以实现。
public class User
{
// user properties
public IEnumerable<Owner> Owners { get; set; }
}
public class Owner
{
// owner properties
public IEnumerable<User> Users { get; set; }
}
您没有指定您是使用代码优先的方法(您基于c#类生成您的Schema)还是数据库优先的方法(从数据库表生成c#类)还是这些都不使用(手动设置您的实体)
如果您能够手动更改类,则可以添加导航属性。这些可能看起来像这样:
public class User
{
// whatever
public IEnumerable<UserOwnerR> userOwners { get; set; }
}
public class Owner
{
// whatever
public IEnumerable<UserOwnerR> userOwners { get; set; }
}
public class UserOwnerR
{
public virtual Owner owner { get; set; }
public virtual User user { get; set; }
}
现在您可以在连接这些表时放置条件。在linq中使用基于sql语法的查询选项,因为这样更容易连接表。你可能想看看实体框架连接3个表来构建你的个人查询。