Последние пару дней я боролся с проблемой и не нашел решения.
У меня есть решение 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();