2008-10-15 79 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提供正確的映射文件。