2010-02-27 16 views
5

Estoy escribiendo una pequeña utilidad para cargar modelos de datos de entidad de un ensamblado y consultarlos.Conectarse a un modelo de entidad utilizando Reflection

He intentado usar para cargar una reflexión derivada ObjectContext, pero ObjectContext no deriva de MarshalByRefObject así que no puedo pasar parámetros al constructor con Activator.CreateInstance() (de acuerdo con la excepción que consigo.)

¿Es posible cargar un modelo de entidad definido y almacenado en un ensamblaje externo usando Reflection, "vinculación tardía" al EDM y realizar consultas en su contra si proporciona una cadena de conexión válida?

+0

¿No puedes agregar una clase de ayuda a las asambleas? –

+0

Preferiría poder engancharme al EDM en cualquier ensamblaje sin ninguna preparación especial del ensamblaje. –

Respuesta

5

Creo ObjectContext.Metadataworkspace.LoadFromAssembly() es lo que busca:

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

+0

¡Esto es exactamente! Con algunos otros trucos de reflexión, puedo conectarme a un ensamble con un EDM, señalar una base de datos y consultar sin saber nada sobre las entidades en el EDM. ¡Gracias! –

+0

Gracias, ¿estás haciendo un estudio genérico de gestión EntityFramework o algo así? – jfar

0

El modelo EDM que se deriva de ObjectContext tiene el nombre ConnectionString que pasa al constructor base desde su propio constructor predeterminado. Como abajo.

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

    #region Constructors 

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

    #endregion 

Siempre puede cambiar los detalles de la conexión a través de ObjectContext.Connection.

+0

Este es un constructor sin parámetros, pero requiere una entrada de archivo de configuración con ese nombre que contiene la cadena de conexión. Necesito poder pasar una cadena o una EntityConnection lista para usar, que no puedo usar CreateInstance. –

Cuestiones relacionadas