Ich versuche, zu einer vorhandenen Datenbank zuzuordnen. Wenn ich den unten stehenden Code verwende und eine Liste mit Ergebnissen für eine bestimmte Entität abrufe, bekomme ich die erwarteten Ergebnisse zurück.EFCore, Viele-zu-Viele, DB Zuerst funktionieren die Navigationseigenschaften nicht
Wenn ich jedoch versuche, .Include(x => x.Book)
zu einer einfachen Listenabfrage gegen die UserBook
Tabelle hinzuzufügen, gibt meine Ergebnismenge leer.
[Table("User")]
public class User
{
[Key]
public Guid UserId { get; set; }
public string UserName{ get; set; }
// Reference
public ICollection<UserBook> UserBooks { get; set; }
}
[Table("Book")]
public class Book
{
[Key]
public Guid BookId { get; set; }
public string BookName{ get; set; }
// Reference
public ICollection<UserBook> UserBooks { get; set; }
}
[Table("UserBook")]
public class UserBook
{
public Guid UserId { get; set; }
public Guid BookId { get; set; }
public int PermissionMask { get; set; }
public bool Deleted { get; set; }
// Ref
public User User { get; set; }
public Book Book { get; set; }
}
ich die Anweisungen bin nach layed hier aus: http://www.learnentityframeworkcore.com/configuration/many-to-many-relationship-configuration
besser Um das Problem zu veranschaulichen, hier sind die Abfragen Ich verwende:
// Returns 1,000+ rows.
_context.UserBooks.ToList();
// Returns 1 row
_context.UserBooks
.Where(x => x.UserId == "SomeGuid")
.ToList();
// Returns 0 rows
_context.UserBooks
.Include(x => x.Book)
.Where(x => x.UserId == "SomeGuid")
.ToList();
// Returns 0 rows
_context.UserBooks.Include(x => x.Book).ToList();
'meine UserBook-Tabelle verwendet einen Primärschlüssel von UserId' Ich frage mich, wie das funktioniert, wenn es eine Viele-zu-Viele-Beziehung ist –
Ich ging von einem Diagramm, das mir zur Verfügung gestellt wurde; Überprüfen Sie SSMS, ich sehe, dass es einen zusammengesetzten Schlüssel verwendet. Hätte die Quelle zuerst überprüfen sollen, das ist mein Fehler. Aktualisierte Frage, um dies zu reflektieren, aber das erste Problem steht immer noch. –
Können Sie uns die fehlgeschlagene Abfrage zeigen? –