2017-10-13 2 views
2

Angenommen ich mit der Graphdatenbank von dieser Probe (SQL Server 2017) gerade arbeitete:Syntax für Entity Framework Abfrage auf SQL Server 2017 Graph-Datenbank

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

Ich habe die folgende SQL-Abfrage:

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

Ich erstellte ein Modell in C# mit EF 6.1.3 und es generiert automatisch alle Klassen und alles aus der Datenbank (EF Designer aus der Datenbank). Das alles funktioniert gut. Ich kann sogar alle Menschen abfragen, indem Sie eine einfache Methode, mit wie:

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

Wenn wir nun wieder auf die ursprüngliche Abfrage kommen, wo ich möchte Restaurants finden, die John mag ... wie soll ich das tun im Entitätsrahmen? muss ich eine LINQ-Abfrage verwenden oder kann ich nur die Entitäten aufrufen? (Vermutlich kann ich nicht, weil es scheint, keine physische Beziehung zwischen den Tabellen zu sein, nur um sie in den Rand zu finden)

Ich war wie

an etwas gedacht
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; 
     } 

Aber diese Syntax ist falsch ... wie kann ich diese Abfrage machen?

Antwort

3

Entity Framework unterstützt die SQL Server-spezifischen Diagrammerweiterungen nicht.

1

Sie die Microsoft API Cosmos DB verwenden können, um Graph Tabellen-Funktionen in SQL Server 2017. Hier zuzugreifen, ist der link

+0

Dank! Obwohl nicht ideal, denke ich, das ist das nächste, was es bekommen kann :) – gbdavid

+0

Danke für den Link, es ist nicht klar, wie die Cosmos DB api mit SQL Server 2017 verwandt ist, es sei denn, ich habe etwas verpasst? – johnstaveley

Verwandte Themen