正在加载引用另一个表中相关数据的数据列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正在加载引用另一个表中相关数据的数据列表相关的知识,希望对你有一定的参考价值。

我试图弄清楚如何从实体框架中的表中检索相关数据的集合,但是我还没有解决。

这是两个表之间的多对多关系,如下图所示:

enter image description hereenter image description here

我的问题是我想检索相关的BOOK到一个Author,它是BOOK表的ICollection,但是当我返回时,它给了我一个空列表。我尝试使用显式加载解决此问题:

public AUTHOR Read(int Aid)
{
    using(var db = new LibraryDBEntities1())
    {
        var author = db.AUTHORs.Find(Aid);
        db.Entry(author).Collection(a => a.BOOKs).Load();

        return author;
    }
}

我也尝试过使用热切的加载方式对其进行修饰

return db.AUTHORs.Where(a => a.Aid == Aid).Include("BOOKs").FirstOrDefault();

但是它也不起作用。我试图按照Microsoft文档Loading Related Entities上的文档进行操作,但是我无法弄清楚我在做什么错。有人可以帮我解决这个问题,也许可以解释我做错了什么?

编辑这就是OnModelCreating的样子。我应该在这里更改/添加代码吗?


protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    throw new UnintentionalCodeFirstException();
}
答案

您可以通过GroupJoin如下实现:

var query = memberModels.GroupJoin(emailModels, m => m.Id, e => e.Id, (m, emailCollection) => new
            {
                FName= m.FName,
                LName = m.LName,
                MobileNumber = m.MobileNumber,
                LandlineNumber = m.LandlineNumber,
                WorkNumber = m.WorkNumber,
                emailCollection = emailCollection
                //emails = string.Join(", ", emailCollection.ToList().Select(e => e.EmailAddress) ).ToList() // you can not use string.Join directly on query, so need to do either ToList or AsEnumerable.
            }).AsEnumerable().Select(a => new 
            {
                FName = a.FName,
                LName = a.LName,
                MobileNumber = a.MobileNumber,
                LandlineNumber = a.LandlineNumber,
                WorkNumber = a.WorkNumber,
                emailAddresses = string.Join(", ", a.emailCollection.Select(e => e.EmailAddress))
            });

以上是关于正在加载引用另一个表中相关数据的数据列表的主要内容,如果未能解决你的问题,请参考以下文章

SQL UPDATE SET 一列等于另一列引用的相关表中的值?

如何将数据从一个 Fragment 发送到另一个 Fragment?

将数据从 plist 加载到另一个类

无法从片段中的 SQLite 获取数据

回收器中的Android片段数据加载

Android:NullPointerException 无法将数据库加载到片段内的列表视图中