1
这里是我的工作类的简化版本:试图让计算性能发挥好与实体框架
public class Parent
{
public int Id { get; set; }
public List<Child> Children { get; set; }
public int ChildrenSum { get { return Children.Sum(c => c.Value); } }
}
public class Child
{
public int Id { get; set; }
public int Value { get; set; }
public Parent Parent { get; set; }
}
public class TestDbContext : DbContext
{
public DbSet<Parent> Parents { get; set; }
public DbSet<Child> Children { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Child>().HasRequired(e => e.Parent);
modelBuilder.Entity<Parent>().HasMany(e => e.Children);
}
}
public class TestDbContextInitializer : DropCreateDatabaseAlways<TestDbContext>
{
protected override void Seed(TestDbContext context)
{
var parent = new Parent { Children = new List<Child>() };
parent.Children.Add(new Child { Value = 3 });
parent.Children.Add(new Child { Value = 1 });
parent.Children.Add(new Child { Value = 2 });
context.Parents.Add(parent);
}
}
当我得到的一切运行时,所有的种子信息在数据库中,但ChildrenSum属性失败,因为孩子没有被加载。这是我的期望,因为我没有使导航属性变为虚拟。我错过了什么吗?
感谢您的提示! – edsobo 2013-02-11 14:31:59