Pregunta

He estado luchando contra un problema durante los últimos dos días y no he encontrado una solución.

Tengo una solución de Visual Studio con 2 proyectos, el primero es una DLL con mis objetos y lógica de negocios, el otro proyecto es mi aplicación WinForm y una dependencia de referencia en el primer proyecto.

Inicialmente escribí los objetos de negocios con la asignación Attribute LINQ y todo funcionaba bien. Entonces pensé que iba a intentar mapeo externo. Seguí unas cuantas guías diferentes sobre cómo debería funcionar; sin embargo, cada vez que ejecutaba el código en mi solución obtenía una InvalidOperationException: Problema de asignación: no se puede encontrar el tipo 'Org.Example.System.Material' de la asignación , cuando WinForm intenta crear el objeto DataContext .

Después de probar diferentes configuraciones en el archivo XML, coloqué una copia de la clase en mi solución GUI bajo un espacio de nombres diferente y funcionó. Mi pregunta es, ¿no es posible asignar un objeto en una biblioteca de clases o si es cómo se logra?

Muestras

dbmap.xml

<Database xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007" Name="Gravel_Dev"><Table Name="dbo.Materials" Member="Material">
<Type Name="Org.Example.System.Material">
  <Column Name="MaterialID" Member="MaterialID" Storage="mMaterialID" DbType="UniqueIdentifier NOT NULL" IsDbGenerated="true" IsPrimaryKey="true"/>
  <Column Name="Code" Member="Code" Storage="mMaterialCode" DbType="Char(4)"/>
  <Column Name="Description" Member="Description" Storage="mDescription" DbType="VarChar(50)"/>
  <Column Name="UnitPrice" Member="UnitPrice" Storage="mUnitPrice" DbType="Decimal(5,2)"/>
</Type>

    

Carga de WinForm

XmlMappingSource mapping = XmlMappingSource.FromUrl("dbmap.xml");
mContext = new DataContext(Properties.Settings.Default.dbConn, mapping);
reloadTable();
¿Fue útil?

Solución

Creo que el problema que podría tener es que la biblioteca de ensamblajes / clases que contiene sus clases no se haya cargado en la memoria en esta etapa.

Intenta acceder a una clase en la biblioteca antes de crear una instancia del contexto de datos para ver si funciona.

Otros consejos

Tengo el mismo problema. Tenemos un archivo de mapeo que mapea diferentes ensamblajes y obtenemos el error de mapeo ya que todos los ensamblajes no están cargados en la memoria. ¿Cuáles son las diferentes soluciones a este problema?

He leído que es posible hacer referencia a un tipo en un ensamblaje diferente utilizando el AssemblyQualifiedName del tipo. Pero no conseguimos que funcionara. Si esto es posible, ¿puedes dar un ejemplo de cómo se vería?

Otra solución, supongo, es tener un archivo de mapeo para cada ensamblaje y darle al archivo de mapeo de datos el archivo de mapeo correcto en tiempo de ejecución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top