SQL Server 2017图形数据库

时间:2017-10-13 15:53:51

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

假设我正在使用此示例(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#中创建了一个Model,它自动生成数据库中的所有类和所有内容(EF Designer来自数据库)。一切正常。我甚至可以使用一个简单的方法查询所有人:

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

现在,如果我们回到原始查询,我想找到John喜欢的餐馆......我将如何在实体框架中执行此操作?我需要使用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;
        }

但是这种语法不正确......我该怎么做这个查询?

3 个答案:

答案 0 :(得分:3)

实体框架不支持特定于SQL Server的图表扩展。

答案 1 :(得分:1)

David Glass提出了对 EntityFramework Core 的拉动请求,以便能够支持SQL Server Graph功能,您可以尝试使用他的EFCore修改版,然后查看它的工作方式。 我正忙于尝试将其用于SQL Graph表。

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

答案 2 :(得分:-1)

您可以使用Microsoft的Cosmos DB API访问SQL Server 2017中的Graph表功能。 这是link