【问题标题】:Syntax for Entity Framework query to SQL Server 2017 Graph database实体框架查询 SQL Server 2017 图形数据库的语法
【发布时间】:2018-03-25 19:32:55
【问题描述】:

假设我正在使用此示例 (SQL Server 2017) 中的图形数据库:

https://docs.microsoft.com/en-us/sql/relational-databases/graphs/sql-graph-sample

我有以下 SQL 查询:

-- Find Restaurants that John likes
SELECT Restaurant.name
FROM Person, likes, Restaurant
WHERE MATCH (Person-(likes)->Restaurant)
AND Person.name = 'John';

我使用 EF 6.1.3 在 C# 中创建了一个模型,它自动生成数据库中的所有类和所有内容(数据库中的 EF 设计器)。这一切都很好。我什至可以使用以下简单方法查询所有人:

public ICollection<People> ListPeople() => Entities.Peoples.ToList();

现在,如果我们回到最初的查询,我想在哪里找到 John 喜欢的餐馆……我将如何在 Entity Framework 中执行此操作?我需要使用 LINQ 查询还是可以只调用实体? (大概我不能,因为表格之间似乎没有任何物理关系,只能在边缘找到它们)

我在想类似的东西

 public ICollection<Restaurant> ListRestaurantsLikedByPerson(string personName)
        {
            var result = from restaurant in Entities.Restaurants, person in Entities.Peoples, likes in Entities.likess
                where match (person - likes -> restaurant)
                and person.name = personName;

            return result;
        }

但是这个语法不正确......我该如何做这个查询?

【问题讨论】:

    标签: c# entity-framework graph-databases sql-server-2017 sql-graph


    【解决方案1】:

    实体框架不支持 SQL 服务器特定的图形扩展。

    【讨论】:

      【解决方案2】:

      David Glass 为 EntityFramework Core 提出了一个拉取请求,以便能够支持 SQL Server Graph 功能,您可以尝试使用他修改后的 EFCore 版本,看看它如何为您工作。 我也正忙于尝试使用它来处理 SQL Graph 表。

      https://github.com/aspnet/EntityFrameworkCore/issues/8527 https://github.com/aspnet/EntityFrameworkCore/pull/13804

      编辑: 由于最新版本 EF 内核的内部结构发生重大变化,此 PR 已关闭,当时处于非活动状态。

      【讨论】:

        猜你喜欢
        • 2018-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多