【发布时间】:2021-04-17 17:18:09
【问题描述】:
有没有办法(ef-core-5.0)为以下代码强制创建中间表Blog_Post?
Blog <= 0,n => Blog_Post <= 1,1 => Post
代码如下
class MyContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
}
public class Blog
{
public int Id { get; set; }
public string Url { get; set; }
}
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
一方面,我想分离关注点,而不是在业务类中添加太多数据库内容。所以我宁愿不要尽可能多地使用显式数据库配置、属性、临时表类等,或者最好不要使用 Fluent 配置......
从另一个角度来看,博客和帖子之间没有多对多的关系。
但是,出于特定原因,必须在数据库中构建此类链接表。
【问题讨论】:
-
你说的是多对多关系吗?
-
@insane_developer,一个或多个,其实无所谓,我只是想创建一个中间表。实际上一个博客可以有零个或多个帖子。但无论如何,应该创建一个表 Blog_Post。
-
您可以这样做,但它需要您的类中的导航属性。我知道有一些多对多关系的示例,您可以在其中指定连接表的名称,甚至可以向其中添加更多字段。您可以尝试将这种方法用于一对多关系,就像博客和帖子的情况一样。但是,如果您想自己管理表,只需为其创建另一个实体并自行更新即可。
标签: c# .net entity-framework entity-framework-core ef-core-5.0