实体框架ProxyCreation

时间:2018-07-16 14:48:53

标签: c# entity-framework

我遇到了实体框架问题

我有函数返回我的列表:

    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时 并再次加载错误的数据

enter image description here

现在我的列表是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

1 个答案:

答案 0 :(得分:0)

我找到解决问题的方法 在查询结束时,我将包含我的entity2以确保已附加

[255, 255, 255]/whitepoint

这确实可以解决我的问题,但是直到现在我还是不明白 为什么我更新数据库中的实体后的实体框架 它返回System.Data.Entity.DynamicProxies.myEntity1和对象myEntity1之间的混合,而不是所有System.Data.Entity.DynamicProxies.myEntity1 ??????