2017-10-13 69 views
2

假设我与图形数据库从这个样品的工作(SQL服务器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#中创建了一个模型,它自动生成数据库中的所有类和一切(EF Designer from database)。这一切工作正常。我甚至可以用一个简单的方法,像查询所有的人:现在

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

,如果我们回到原来的查询,在这里我想找到约翰喜欢的餐馆......我将如何做到这一点在实体框架?我需要使用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

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

1

您可以使用微软的宇宙DB API来访问在SQL Server 2017 这里图形表的特点是link

+0

谢谢!虽然不理想,但我猜这是最接近的:) – gbdavid

+0

感谢您的链接,目前尚不清楚Cosmos DB api如何与SQL Server 2017相关,除非我错过了某些东西? – johnstaveley