我们的数据库设计中有一些表,其中包括一个名为“pk_id”的列。此列来自类型“uniqueidentifier”(Guid)。uniqueidentifier指向另一个表中的实体。所以它基本上是一个外键列。
特别之处在于,此列没有任何约束。因此您可以将任何uniqueidentifier-value放入此列。我们有一个额外的“type”-列来确定uniqueidentifier指向哪个表。
这当然不符合数据库设计的良好规则,但在我们的应用程序上下文中这是必要的,而那不是重点。
我们的问题:
当我们用dotnet ef构建DbContext时,ef核心不能通过“pk_id”列识别与其他表的关系。那也不足为奇。
但是正因为如此,我们不能使用“include”和“includeThen”方法来构建SQL-Join查询。
我希望这在某种程度上是可以理解的。如何在EntityFramework核心内最好地处理这个问题?有没有办法使用像“include”这样的方法呢?
您可以在查询时使用流畅的语法,以便指定如何联接
语法如下所示:取自此处:https://entityframework.net/joining)
var data = context.Authors
.Join(
context.Books,
author => author.AuthorId,
book => book.Author.AuthorId,
(author, book) => new
{
BookId = book.BookId,
AuthorName = author.Name,
BookTitle = book.Title
}
).ToList();