Внешнее сопоставление LINQ с библиотекой классов - PullRequest
1 голос
/ 15 октября 2008

Последние пару дней я боролся с проблемой и не нашел решения.

У меня есть решение Visual Studio с 2 проектами, первый - это DLL с моими бизнес-объектами и логикой, другой проект - мое приложение WinForm и ссылочная зависимость от первого проекта.

Сначала я написал бизнес-объекты с помощью сопоставления атрибутов LINQ, и все работало нормально. Тогда я подумал, что попробую внешнее картирование. Я следовал нескольким различным руководствам о том, как это должно работать; однако каждый раз, когда я запускаю код в своем решении, я получаю InvalidOperationException: Mapping Проблема: не удается найти тип 'Org.Example.System.Material' из сопоставления , когда WinForm пытается создать объект DataContext.

Попробовав различные конфигурации в файле XML, я поместил копию класса в свое решение с графическим интерфейсом в другом пространстве имен, и это сработало. У меня такой вопрос: нельзя ли отобразить объект в библиотеке классов или это так?

Образцы

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>

Загрузка WinForm

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

Ответы [ 2 ]

1 голос
/ 15 октября 2008

Я думаю, что проблема, которую вы можете получить, состоит в том, что библиотека ассемблера / классов, содержащая ваши классы, не была загружена в память на данном этапе?

Попробуйте получить доступ к классу в библиотеке, прежде чем создавать экземпляр контекста данных, чтобы проверить, работает ли он.

0 голосов
/ 24 сентября 2009

У меня такая же проблема. У нас есть файл сопоставления, который отображает различные сборки, и мы получаем ошибку сопоставления, поскольку все сборки не загружаются в память. Каковы различные решения этой проблемы?

Я прочитал, что можно ссылаться на тип в другой сборке, используя AssemblyQualifiedName этого типа. Но мы не получили его на работу. Если это возможно, можете ли вы привести пример того, как это будет выглядеть?

Другое решение, я полагаю, состоит в том, чтобы иметь один файл сопоставления для каждой сборки и дать тексту данных правильный код сопоставления во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...