为什么我的用户无法在此数据库优先上下文中访问多人关系中的数据?

时间:2016-01-13 20:09:48

标签: c# entity-framework entity-framework-core

我在访问数据时遇到一些麻烦是一对多的关系,用户有很多书。这是数据库的第一个场景(这就是我运行脚手架命令的原因)。

以下是我尝试访问数据的方式:

using (var db = new MyContext())
{
    var user = db.User.First(u => u.UserId == 1);
    var firstBook = user.Book.First(); // error: Sequence contains no elements
}

我用命令生成了我的上下文和模型:

dnx ef dbcontext scaffold "ConnectionString" EntityFramework.MicrosoftSqlServer --outputDir DatabaseModels

在上下文中,对此关系的唯一引用是Book

modelBuilder.Entity<Book>(entity =>
{
    entity.HasOne(d => d.UserIdNavigation).WithMany(p => p.Book).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict);

});

BookUser的相关部分:

图书:

public virtual User UserIdNavigation { get; set; }

用户:

public virtual ICollection<Book> Book { get; set; }

任何想法可能是什么问题?

如果我先加载图书并检查其用户关系,那么user.Book.First()行就可以了。

例如:

using (var db = new MyContext())
{
    var user = db.User.First(u => u.UserId == 1);
    var userFromBook = db.Book.Last().UserIdNavigation;
    var firstBook = user.Book.First(); // now this succeeds
}

显然,总是必须直接从您希望通过关系访问的上下文中查找记录,这并不理想。

0 个答案:

没有答案