Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否将System.Data.Entity.DynamicProxies克隆到实际(非代理)类?_C#_Entity Framework_Poco_Dynamic Proxy_Cloning - Fatal编程技术网

C# 是否将System.Data.Entity.DynamicProxies克隆到实际(非代理)类?

C# 是否将System.Data.Entity.DynamicProxies克隆到实际(非代理)类?,c#,entity-framework,poco,dynamic-proxy,cloning,C#,Entity Framework,Poco,Dynamic Proxy,Cloning,可能重复: 我试图弄清楚如何将System.Data.Entity.DynamicProxies克隆或转换为它的实际类。例如: System.Data.Entity.DynamicProxies.Currency_F4008E27DE_etc is the proxy class MyApp.Entities.Currency is the real class MyApp.Entities中的所有类都继承自BaseEntity,因此我尝试在其中进行转换: public abstract p

可能重复:

我试图弄清楚如何将System.Data.Entity.DynamicProxies克隆或转换为它的实际类。例如:

System.Data.Entity.DynamicProxies.Currency_F4008E27DE_etc is the proxy class
MyApp.Entities.Currency is the real class
MyApp.Entities中的所有类都继承自BaseEntity,因此我尝试在其中进行转换:

public abstract partial class BaseEntity
{
    public T ShallowCopy<T>() where T : BaseEntity
    {
        return this.MemberwiseClone() as T;
    }
    // other BaseEntity properties not relevent here
}
公共抽象部分类BaseEntity
{
public T ShallowCopy(),其中T:BaseEntity
{
将此.MemberwiseClone()作为T返回;
}
//此处不相关的其他BaseEntity属性
}
然后将DynamicProxies转换为真实类:

// this returns a DynamicProxies class
Currency currency = LookupDefaultCurrency(); 
// this one needs to return a Entities.Currency class 
// (but currently returns a DynamicProxies class too
Currency pocoCurrency = (Currency)currency.ShallowCopy<Currency>();
HttpRuntime.Cache[key] = pocoCurrency;
//这将返回一个DynamicProxies类
货币=LookupDefaultCurrency();
//这个需要返回一个Entities.Currency类
//(但当前也返回DynamicProxies类
Currency poccurrency=(Currency)Currency.ShallowCopy();
HttpRuntime.Cache[key]=poccurrency;
这样做的原因是我想从这个对象中删除所有实体框架跟踪等,只存储它的普通(POCO)缓存中的属性。我需要能够对大约100个实体类执行此操作,因此它必须是合理的泛型-而不必手动为每个属性指定object1.foo=object2.foo。

可能有用。它讨论了几种克隆数据的方法。我不确定这些方法是否可以用于将对象转换为f类型A到类型B的对象。但这绝对值得一试


我对这个问题的结果非常感兴趣,因为它还使用通用存储库模式和memcached来解决相同的缓存技术,在反序列化数据时,您的问题似乎也是一样的。

为什么您没有像前面的问题中所问的那样关闭代理生成?事实证明,这不是我需要的。我确实需要它们作为代理(包括所有跟踪等)大多数情况下。但当缓存以供以后只读使用时,它需要是一个非代理对象。请看,您可以有选择地为某些上下文实例或甚至查询关闭代理创建,因此,您可以仅在加载货币时关闭代理。我使用的是存储库-服务模式,因此实际的objectcontext为n不可访问,它是与调用_service.Get()的代码分开的两层,后者调用repository.Get(),后者调用objectcontext.asQueryable()。其中(…等)。在这种情况下,您需要像
GetUnproxied()这样的特殊方法
。体系结构不应该要求您如何检索数据。如果您需要特殊的方法,只需将其公开。通用方法是童话故事。@JK您能提供哪种方法对您有效吗?我非常感兴趣,因为我的项目中也有同样的问题。