提问人:sam it 提问时间:7/16/2018 最后编辑:sam it 更新时间:7/17/2018 访问量:54
实体框架 ProxyCreation
Entity Framework ProxyCreation
问:
我的实体框架问题
我有函数返回我的列表:
public IEnumerable<Entity1> GetmyEntity1ById(int Id1 , int Id2)
{
var myEntity1DbSet = Set<myEntity1>();
var myEntity2DbSet = Set<myEntity2>();
var query = myEntity1DbSet.Where(e => e.Id == Id1)
.Join(myEntity2DbSet.Where(e2 => e2.id== Id2),
e1=> e1.id,
e2=> e2.id,
(e1, e2) => e1
);
return query.ToList()
当我第一次加载日期很好时
获取 System.Data.Entity.DynamicProxies.myEntity1 的列表
List<object> =
{
System.Data.Entity.DynamicProxies.myEntity1,
System.Data.Entity.DynamicProxies.myEntity1,
System.Data.Entity.DynamicProxies.myEntity1
}
但是当我将数据库中的新实体添加到我的 myEntity1 时 并再次加载数据,我得到错误
现在我的列表是 System.Data.Entity.DynamicProxies.myEntity1 + 对象 myEntity1 :(存储在数据库中的新值)
List<object> =
{
System.Data.Entity.DynamicProxies.myEntity1,
System.Data.Entity.DynamicProxies.myEntity1,
System.Data.Entity.DynamicProxies.myEntity1,
myEntity1
}
它抛出错误
System.NullReferenceException
如果我在异常后重新启动我的应用程序,我会 获取我的新实体
并会得到
List<object> =
{
System.Data.Entity.DynamicProxies.myEntity1,
System.Data.Entity.DynamicProxies.myEntity1,
System.Data.Entity.DynamicProxies.myEntity1,
System.Data.Entity.DynamicProxies.myEntity
}
我看到的是,每次当我的列表在 System.Data.Entity.DynamicProxies.myEntity1 和 myEntity1 之间混合时,它都会抛出错误
我发现错误在哪里,因为我的模型 myEntity1 包含 myEntity2
public class myEntity1
{
public int id {get; set;}
public myEntity2 entity2{get; set;}
}
public class myEntity2
{
public int {get; set;}
public prop myProp {get; set;}
}
异常是抛出,因为当我在UI中时,我试图得到
myEntity1.entity2.myProp
我的问题是如何强制实体框架一直返回 System.Data.Entity.DynamicProxies.myEntity1 而不是 myEntity1 因为当它返回 myEntity1 时,myEntity2 始终为 null
答:
我找到了解决我问题的方法 在查询结束时,我包含我的 entity2 以确保已附加
var query = myEntity1DbSet.Where(e => e.Id == Id1)
.Join(myEntity2DbSet.Where(e2 => e2.id== Id2),
e1=> e1.id,
e2=> e2.id,
(e1, e2) => e1
). Include(e1=>e1.entity2)
它确实解决了我的问题,但直到现在我都不明白 为什么在我更新数据库中的实体后进行实体框架 它返回 System.Data.Entity.DynamicProxies.myEntity1 和对象 myEntity1 之间的混合,而不是所有 System.Data.Entity.DynamicProxies.myEntity1??????
上一个:更新数据库后出现实体框架错误
评论