我遇到了实体框架问题
我有函数返回我的列表:
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 因为当myEntity2始终为null时,它始终返回myEntity1
答案 0 :(得分:0)
我找到解决问题的方法 在查询结束时,我将包含我的entity2以确保已附加
[255, 255, 255]/whitepoint
这确实可以解决我的问题,但是直到现在我还是不明白 为什么我更新数据库中的实体后的实体框架 它返回System.Data.Entity.DynamicProxies.myEntity1和对象myEntity1之间的混合,而不是所有System.Data.Entity.DynamicProxies.myEntity1 ??????