可能性の重複:
EF4 Cast DynamicProxies to underlying objectC#System.Data.Entity.DynamicProxiesを実際の(プロキシではない)クラスにクローンしますか?
私はそれが実際のクラスだに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
}
と実際のクラスに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;
この理由は、このオブジェクトからすべてのEntity Frameworkトラッキングなどを削除し、プレーン(POCO)プロパティをキャッシュに保存するだけだからです。そして、私は100以上のEntityクラスすべてでこれを行うことができる必要があります。したがって、合理的に汎用的でなければなりません。手動でobject1.foo = object2.fooを各プロパティごとに指定する必要はありません。
なぜ以前の質問で質問したようにプロキシの生成をオフにしなかったのですか? –
それは私が必要なものではないことが分かります。私は大部分の時間のためにプロキシ(すべての追跡など)が必要です。しかし、後で読み取り専用のキャッシュを使用する場合は、非プロキシオブジェクトである必要があります。http://stackoverflow.com/questions/6688772/c-entity-framework-using-only-one-objectcontext-per-httpcontext –
いくつかのコンテキストインスタンスまたはクエリに対してもプロキシ作成を選択的にオフにすることができます。したがって、Imhoでは、通貨を読み込むためにのみプロキシをオフにしても問題ありません。 –