2010-02-27 35 views
5

Tôi đang viết một tiện ích nhỏ để tải Mô hình dữ liệu thực thể từ một hội đồng và truy vấn chống lại chúng.Kết nối với Mô hình thực thể bằng cách sử dụng Reflection

Tôi đã cố gắng sử dụng Reflection để tải một nguồn gốc ObjectContext, nhưng ObjectContext không xuất phát từ MarshalByRefObject vì vậy tôi không thể vượt qua các tham số để các nhà xây dựng với Activator.CreateInstance() (theo ngoại trừ tôi nhận được.)

Có thể tải một mô hình thực thể được định nghĩa và lưu trữ trong một assembly ngoài bằng cách sử dụng Reflection, "late bind" với EDM, và thực hiện các truy vấn đối với nó nếu bạn cung cấp một chuỗi kết nối hợp lệ?

+0

Có thể bạn không thêm một lớp helper để các hội đồng? –

+0

Tôi muốn có thể móc vào EDM trong bất kỳ lắp ráp nào mà không cần chuẩn bị đặc biệt cho lắp ráp. –

Trả lời

5

Tôi tin ObjectContext.Metadataworkspace.LoadFromAssembly() là những gì bạn đang tìm kiếm:

http://msdn.microsoft.com/en-us/library/bb495513.aspx

+0

Đây chính xác là nó! Với một vài thủ thuật phản chiếu khác, tôi có thể kết nối với một assembly với một EDM, trỏ tới một cơ sở dữ liệu và truy vấn mà không biết bất cứ điều gì về các thực thể trong EDM! Cảm ơn! –

+0

Cảm ơn, bạn đang tạo một studio quản lý EntityFramework chung hay gì đó? – jfar

0

Mô hình EDM xuất phát từ ObjectContext có tên ConnectionString mà nó chuyển đến hàm tạo cơ sở từ hàm tạo mặc định của chính nó. Như dưới đây.

public const string ConnectionString = "name=My_Entities"; 
    public const string ContainerName = "My_Entities"; 

    #region Constructors 

    public My_Entities() 
     : base(ConnectionString, ContainerName) 
    { 
     Initialize(); 
    } 

    #endregion 

Bạn luôn có thể thay đổi chi tiết Kết nối thông qua ObjectContext.Connection.

+0

Đây là một hàm tạo tham số, nhưng nó đòi hỏi một mục nhập tệp cấu hình với tên đó chứa chuỗi kết nối. Tôi cần để có thể vượt qua trong một chuỗi hoặc một EntityConnection sẵn sàng để đi, mà tôi không thể sử dụng CreateInstance. –

Các vấn đề liên quan