相关疑难解决方法(0)

实体条目的意外GetType()结果

当我迭代通过ObjectStateEntries我期望[t]变量名称将是MY_ENTITY

foreach (ObjectStateEntry entry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted))
{
    Type t = entry.Entity.GetType();
    ...
}
Run Code Online (Sandbox Code Playgroud)

但我是真实的

System.Data.Entity.DynamicProxies.MY_ENTITY_vgfg7s7wyd7c7vgvgv.....
Run Code Online (Sandbox Code Playgroud)

如何确定可以将当前条目转换为MY_ENTITY类型?

c# entity-framework objectstatemanager ef-code-first dbcontext

33
推荐指数
3
解决办法
1万
查看次数

EF4 Cast DynamicProxies到底层对象

我正在使用带有POCO模板的Entity Framework 4.

我有一个List,其中MyObject是动态代理.我想使用XmlSerializer序列化此列表,但我不希望它们序列化为DynamicProxies,而是作为底层POCO对象.

我知道ContextOptions.ProxyCreationEnabled,但我不想使用它.我只是想知道如何将代理对象转换为它的POCO序列化.

c# serialization poco entity-framework-4

18
推荐指数
2
解决办法
9140
查看次数

如何将动态代理转换为POCO?

我正在尝试序列化域模型并遇到一个需要将动态代理转换为POCO的问题.我遇到的问题是通过模型中的虚拟属性存在循环引用.虽然我试图使用[ScriptIgnore]序列化程序不解析这些属性,但它仍然可以.我相信这是因为对象是动态代理,并且属性中仍然存在一些导致解析器进入的残余(这反过来导致递归错误"循环引用" - 我尝试将递归限制为3步但我得到了错误"超出递归步骤").

如何将对象从动态代理转换为POCO以便可以序列化?

编辑:简单的例子

public class One : BaseViewModel
{
    public int OneId { get; set; }
    public virtual ICollection<Two> Two { get; set; }
}

public class Two
{
    public int TwoId { get; set; }
    public int OneId { get; set; }
    [ScriptIgnore]
    public virtual One One { get; set; }
}

public abstract class BaseViewModel
{
    public string AsJson()
    {
        var serializer = new JavaScriptSerializer();
        return serializer.Serialize(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# serialization dynamic-proxy entity-framework-4.1 asp.net-mvc-3

6
推荐指数
1
解决办法
8441
查看次数