私のDBから選択したデータに問題があります。データをデータベースに保存するとうまくいくが、データは取得できない。 :(データベースから複数のオブジェクトを選択します。Entity Frameworkコア
モデル10個のクラスが含まれる一つのクラス別のクラスが、一方向にしか含まれ モデル:。。データベースの
namespace MyNameSpace
{
public class A
{
public long Id { get; set; }
public B B { get; set; }
public C C { get; set; }
public D D { get; set; }
public string Something { get; set; }
}
public class B
{
public long Id { get; set; }
public List<E> ListE { get; set; }
public List<F> ListF { get; set; }
}
public class C
{
public long Id { get; set; }
public G G { get; set; }
public J J { get; set; }
}
public class D
{
public long Id { get; set; }
public string Something { get; set; }
}
public class E
{
public long Id { get; set; }
public G G { get; set; }
public string Something { get; set; }
}
public class F
{
public long Id { get; set; }
public G G { get; set; }
public H H { get; set; }
public I I { get; set; }
public string Something { get; set; }
}
public class G
{
public long Id { get; set; }
public string Something { get; set; }
}
public class H
{
public long Id { get; set; }
public string Something { get; set; }
}
public class I
{
public long Id { get; set; }
public string Something { get; set; }
}
public class J
{
public long Id { get; set; }
public string Something { get; set; }
}
}
コンテキストが基本である DBコンテキスト:。
public class MyDBContext : DbContext
{
public MyDBContext(DbContextOptions<MyDBContext> options) : base(options)
{ }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<A>();
modelBuilder.Entity<B>();
modelBuilder.Entity<C>();
modelBuilder.Entity<D>();
modelBuilder.Entity<E>();
modelBuilder.Entity<F>();
modelBuilder.Entity<G>();
modelBuilder.Entity<H>();
modelBuilder.Entity<I>();
modelBuilder.Entity<J>();
}
public DbSet<A> Aset { get; set; }
public DbSet<B> Bset { get; set; }
public DbSet<C> Cset { get; set; }
public DbSet<D> Dset { get; set; }
public DbSet<E> Eset { get; set; }
public DbSet<F> Fset { get; set; }
public DbSet<G> Gset { get; set; }
public DbSet<H> Hset { get; set; }
public DbSet<I> Iset { get; set; }
public DbSet<J> Jset { get; set; }
}
Getメソッドを:
public class DBConnections
{
private readonly MyDBContext _context;
public DBConnections(MyDBContext context)
{
_context = context;
}
public List<A> GetA()
{
return _context.Aset.Select(index => index)
.Include(i => i.B)
.ThenInclude(j => j.ListE
.Select(k => k.G))
.Include(i => i.B)
.ThenInclude(j => j.ListF
.Select(k => new {
k.G,
k.H,
k.I
}))
.Include(i => i.C)
.ThenInclude(i => new {
i.G,
i.J
})
.Include(i => i.D)
.ToList();
}
}
私はgettin gデータをデータベースから取得し、.ThenIncludeは正常に動作しますが、単純な関連オブジェクトやオブジェクトのリストをロードしようとしています。 上記のオブジェクトリストに含まれるすべてのオブジェクトのすべての関連オブジェクトをロードしたいときに問題が発生します。これは、オブジェクトがnullを参照するときに選択ベローズがドロップするためです。
.Include(i => i.B)
.ThenInclude(j => j.ListF
.Select(k => new {
k.G,
k.H,
k.I
}
関連するすべてのデータと関連するデータを、1回の呼び出しでデータベースにロードするにはどうすればよいですか?
ご質問はお聞きしたいかについては明らかではありませんか? – Siraj
バッターの理解のために編集しました。 –