私は次のクラス定義を持っています
public abstract class AbstractClass
{
[Key]
public string Name { get; set; }
public virtual IndependentClass IndependentClass { get; set; }
public string IndependentClassName { get { return IndependentClass == null ? "<NULL>" : IndependentClass.Name; } }
}
public class Impl1 : AbstractClass
{
}
public class Impl2 : AbstractClass
{
}
public class IndependentClass
{
[Key]
public string Name { get; set; }
public virtual Impl1 Impl1 { get; set; }
public virtual ICollection<Impl2> Impl2s { get; set; }
}
私のこれらでContext.OnModelCreating
:
modelBuilder.Entity<AbstractClass>().HasOptional(abs => abs.IndependentClass);
modelBuilder.Entity<IndependentClass>().HasRequired(ind => ind.Impl1);
modelBuilder.Entity<IndependentClass>().HasMany(ind => ind.Impl2s);
私の初期化は次のようになります(配列をコンテキストに追加してcontext.SaveChanges()
トリミングします)
var impl1s = new[]
{
new Impl1() { Name = "a" },
new Impl1() { Name = "b" },
new Impl1() { Name = "c" }
}
var inds = new[]
{
new IndependentClass() { Name = "A", Impl1 = impl1s[0] },
new IndependentClass() { Name = "B", Impl1 = impl1s[1] }
}
var impl2s = new[]
{
new Impl2() { Name = "a1", IndependentClass = inds[0] },
new Impl2() { Name = "a2", IndependentClass = inds[0] },
new Impl2() { Name = "b1", IndependentClass = inds[1] },
new Impl2() { Name = "b2", IndependentClass = inds[1] },
new Impl2() { Name = "c1", IndependentClass = null }
}
そして最後に、各dbコレクションをダンプする単純なビューがあります。私の問題は、ナビゲーションプロパティが必要なように入力されていないことです。つまり、私のビューの出力は次のとおりです。
Independent Classes:
A: Impl1 = a, Impl2s = []
B: Impl1 = b, Impl2s = []
Impl1s
a: IndependentClass = <NULL>
b: IndependentClass = <NULL>
c: IndependentClass = <NULL>
Impl2s
a1: IndependentClass = A
a2: IndependentClass = A
b1: IndependentClass = B
b2: IndependentClass = B
c1: IndependentClass = <NULL>
IndepdendentClassesにはImpl2が設定されている必要があり、最初の2つのImpl1にはIndependentClassesが入力されている必要があります。
誰かが私が間違っていることを教えてもらえますか?