2008-10-15 84 views
1

我一直在挣扎,在过去几天了问题,还没有找到一个解决方案。LINQ外部映射到类库

我有2个项目的Visual Studio解决方案,第一种是与我的业务对象和逻辑DLL,另一个项目是我的WinForm应用程序,并在第一个项目的引用的依赖。

我最初写了属性LINQ映射业务对象和一切工作正常。然后我想我会尝试外部映射。我遵循了几条不同的指导,说明它应该如何工作。但是,每次我在我的解决方案中运行代码时,我都会得到一个InvalidOperationException:映射问题:当WinForm尝试创建DataContext对象时,无法从映射中找到类型'Org.Example.System.Material'。

在尝试XML文件中的不同配置后,我将该类的副本放到我的GUI解决方案下的不同命名空间下,并且工作正常。我的问题是,是不是可以在类库中映射对象,或者它是如何完成的。

样品

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(); 

回答

1

我觉得proble你可能会得到的是,包含你的类的程序集/类库在这个阶段还没有被加载到内存中?

尝试在实例化数据上下文之前访问库中的类以查看是否有效。

+0

谢谢,只要我宣布与它的工作类型的对象,怪它不会把它从我的节目表 decleration。 – LizB 2008-10-15 17:59:02

0

我有同样的问题。我们有一个映射文件映射不同的程序集,我们得到了映射错误,因为所有的assemplies都没有加载到内存中。这个问题有哪些不同的解决方案?

我读过,可以使用该类型的AssemblyQualifiedName在不同的程序集中引用一个类型。但我们没有得到它的工作。如果这是可能的,你可以举一个这样的例子吗?

我想,另一种解决方案是每个程序集都有一个映射文件,并在运行时为datacontext提供正确的映射文件。