thể trùng lặp:
EF4 Cast DynamicProxies to underlying objectC# Clone System.Data.Entity.DynamicProxies vào lớp thực tế (không được ủy quyền)?
Tôi đang cố gắng tìm ra cách để sao chép hoặc chuyển đổi một System.Data.Entity.DynamicProxies vào đó là lớp học thực tế. Ví dụ:
System.Data.Entity.DynamicProxies.Currency_F4008E27DE_etc is the proxy class
MyApp.Entities.Currency is the real class
Tất cả các lớp học trong MyApp.Entities kế thừa từ BaseEntity, vì vậy tôi đã cố gắng để làm chuyển đổi đó:
public abstract partial class BaseEntity
{
public T ShallowCopy<T>() where T : BaseEntity
{
return this.MemberwiseClone() as T;
}
// other BaseEntity properties not relevent here
}
Và sau đó chuyển đổi DynamicProxies vào lớp thực:
// 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;
Lý do cho điều này là tôi muốn xóa tất cả theo dõi khung thực thể và vv khỏi đối tượng này và chỉ lưu trữ các thuộc tính thuần túy (POCO) trong bộ nhớ cache. Và tôi sẽ cần để có thể làm điều này cho tất cả 100 hoặc hơn các lớp Entity, do đó, nó phải được hợp lý chung chung - mà không cần nói một cách thủ công object1.foo = object2.foo cho mỗi thuộc tính duy nhất.
Tại sao bạn không tắt tạo proxy như bạn đã hỏi trong câu hỏi trước? –
Hóa ra đó không phải là những gì tôi cần. Tôi cần chúng để được proxy (với tất cả các theo dõi vv) cho hầu hết thời gian. Nhưng khi bộ nhớ đệm cho sau này chỉ đọc sử dụng nó cần phải là một đối tượng không proxy xem http://stackoverflow.com/questions/6688772/c-entity-framework-using-only-one-objectcontext-per-httpcontext –
Bạn có thể bật tắt proxy tạo chọn lọc cho một số trường hợp ngữ cảnh hoặc thậm chí truy vấn để Imho bạn nên được tốt với việc tắt proxy chỉ để tải tiền tệ của bạn. –