我不确定如何在多个>多个关系的上下文中定义Include(..)。ThenInclude(...)。
所以这是填充nav属性,SiteEducators是链接
var site = this._dbContext.Sites.Include(x => x.SiteEducators).FirstOrDefault();
根据文档定义
public DbSet<Educator> Educators { get; set; }
public DbSet<Site> Sites { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
#region Site->Educator Link
modelBuilder.Entity<SiteEducator>()
.HasKey(t => new { t.SiteId, t.EducatorId });
modelBuilder.Entity<SiteEducator>()
.HasOne(pt => pt.Site)
.WithMany(p => p.SiteEducators)
.HasForeignKey(pt => pt.SiteId);
modelBuilder.Entity<SiteEducator>()
.HasOne(pt => pt.Educator)
.WithMany(t => t.SiteEducators)
.HasForeignKey(pt => pt.EducatorId);
#endregion
}
问题是,如果我调试“site”它有导航属性,我可以看到“EducatorId”的值很好,但IT导航属性为Educator为空。
所以这将是null
model.SiteEducators.FirstOrDefault().Educator
这会返回一个值
model.SiteEducators.FirstOrDefault().EducatorId
我的意思是:
阵列上必须有某种“ThenInclude”吗?
我如何充实这个其他物体,什么是synatax,任何想法?
任何帮助都会很棒,那些人:)
答案 0 :(得分:1)
好吧所以它看起来像是一系列git问题,这就是修复:
1)在ApplicationDbContext中映射链接表对象。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".defineBybeldbAlles">
<ListView
android:id="@+id/BybelHoofstukListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="#ff303030"
android:dividerHeight="1dp"
android:layout_marginTop="21dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Boek naam:"
android:id="@+id/boeknaambyhoofstuklys"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textColor="#000063"
android:textSize="20dp" />
</RelativeLayout>
(旁注:Didnt将其复数,因为只有常规的许多设置生成的数据库表格没有多元化,不想复制任何内容以防万一)
2)现在,在初始查询之后,运行第二个查询以加载数据项。你不必将它们分配到EF应该只知道它们被加载到根对象
中的任何地方public DbSet<SiteEducator> SiteEducator { get; set; }
问题是文档遗漏了映射链接表的重要部分,没有它似乎没有办法在List中加载嵌套对象。