我正在尝试映射到现有数据库。当我使用下面的代码并为给定实体提取结果列表时,我会得到我期望的结果。
但是,当我尝试将int abc() {
int a = 5;
while(a > 0) {
a = a -1 // Decrement inside loop
// Code
}
}
添加到针对.Include(x => x.Book)
表的简单列表查询时,我的结果集将返回空。
UserBook
我按照此处列出的说明进行操作:http://www.learnentityframeworkcore.com/configuration/many-to-many-relationship-configuration
为了更好地说明问题,以下是我正在使用的查询:
[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; }
}
答案 0 :(得分:1)
我认为EF会抱怨UserBook实体没有定义键,不知道你是如何让它工作的。但是为了使包含工作我相信你需要明确复合键。尝试将以下内容添加到DbContext
课程中:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<UserBook>(e => e.HasKey(c => new { c.UserId, c.BookId }));
}
答案 1 :(得分:0)
您的映射表示不可为空的外键(因此EF将在查询中生成内部联接)。尝试将外键上的数据类型从Guid更改为Guid?然后再试一次。