2008-10-15 4 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

감사합니다. 작동하는 유형의 객체를 선언하자마자 프로그램에서 내 표 위반에서 가져 오지 않는 것이 이상합니다. – LizB

+0

형식 이름을 발견 할 때 현재로드 된 어셈블리에서만 형식을 찾으려고 시도합니다. 이 방법은 내가 작업하고있는 몇 가지 버그의 일부로 다시 작성하도록 예정되어 있습니다 ;-) – DamienG

0

동일한 문제가 있습니다. 우리는 다른 어셈블리를 매핑하는 매핑 파일을 가지고 있으며 모든 assample이 메모리에로드되지 않기 때문에 매핑 오류가 발생합니다. 이 문제의 다른 해결책은 무엇입니까?

나는 형식의 AssemblyQualifiedName을 사용하여 다른 어셈블리의 형식을 참조 할 수 있음을 읽었습니다. 그러나 우리는 그것을 작동시키지 못했습니다. 이것이 가능하다면 어떻게 생겼는지에 대한 예를들 수 있습니까?

또 다른 해결책은 각 어셈블리에 대해 하나의 매핑 파일을 갖고 런타임에 데이터 매핑 텍스트를 올바른 매핑 파일에 제공하는 것입니다.

관련 문제