假设我正在使用此示例中的图形数据库(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;
}
但是这个语法不正确......我该如何做这个查询?