我想映射到現有的數據庫。當我使用下面的代碼併爲給定的實體提供結果列表時,我得到了我期望的結果。EFCore,多對多,數據庫首先,導航屬性不起作用
但是,當我嘗試將.Include(x => x.Book)
添加到針對UserBook
表的簡單列表查詢中時,我的結果集返回空白。
[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; }
}
我按照說明奠定在這裏:http://www.learnentityframeworkcore.com/configuration/many-to-many-relationship-configuration
爲了更好地說明問題,這裏是我使用的查詢:
// 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();
'我的UserBook表使用UserId'的主鍵,我想知道如果這是多對多的關係如何工作 –
我正在脫離我提供的圖表;仔細檢查SSMS,我發現它使用的是複合鍵。應該先檢查源代碼,那是我的不好。更新的問題反映了這一點,但最初的問題仍然存在。 –
你能告訴我們失敗的查詢嗎? –