【发布时间】:2019-12-16 17:45:10
【问题描述】:
我有 2 个实体,书和作者。
一本书有一个作者,一个作者有一本最喜欢的书,尽管这显然不是同一个关系。
所以,我们有:
- 一本书有一个作者,而这个作者有很多本书(1-m);
- 一位作者有一本最喜欢的书,而某本书已被一位作者收藏[是的,让我们承认它不能被 2 个作者收藏] (1-1)。
每次我只想在实体中表示关系的第一部分,因为我不需要第二部分。
如何使用 EF Core 表示这种关系?因为Ef Core倾向于认为第二个关系的第一部分是第一个关系的第一个par的结束部分=> 1-[m][1-]1。
public class Book
{
public Author Author { get; set; }
}
public class Author
{
public Book FavouriteBook { get; set; }
}
这不起作用,因为 EF Core 认为它们都是同一个 1-1 关系的一部分。
Book.Author 不是收藏这本书的作者。 Author.FavouriteBook 不是作者写的书之一。
我不能使用ModelBuilder,因为每次我都没有对应的关系。
【问题讨论】:
-
您的表具有 1-M 和 1-1 关系,但您的实体仅显示 1-1 关系。
Book.Author只是 some 关系的一端。在没有任何其他配置的情况下,EF Core 正确地假定它与FavouriteBook是 1-1 关系。each time I don't have the counterpart of the relation.这将是Books上的Author属性 -
是的,我知道,但我不想在我的实体上拥有其他属性,所以我想知道是否有一些可用的配置告诉 EF Core 这些不一样关系。
标签: c# .net .net-core entity-framework-core