문제

나는 지난 며칠 동안 문제로 어려움을 겪고 있었고 해결책을 찾지 못했습니다.

2 개의 프로젝트가있는 Visual Studio 솔루션이 있습니다. 첫 번째 프로젝트는 비즈니스 객체 및 논리가있는 DLL, 다른 프로젝트는 Winform 응용 프로그램 및 첫 번째 프로젝트에 대한 참조 의존성입니다.

나는 처음에 LINQ 매핑 속성으로 비즈니스 객체를 작성했으며 모든 것이 잘 작동했습니다. 그런 다음 외부 매핑을 시도 할 것이라고 생각했습니다. 나는 그것이 어떻게 작동 해야하는지에 대한 몇 가지 다른 가이드를 따랐다. 그러나 내 솔루션에서 코드를 실행할 때마다 InvalidOperationException : 매핑 문제 : 'org.example.system.material'유형을 찾을 수 없습니다., WinForm이 DataContext 객체를 작성하려고 시도 할 때.

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();
도움이 되었습니까?

해결책

당신이 얻는 문제는이 단계에서 수업이 포함 된 어셈블리/클래스 라이브러리가 메모리에로드되지 않았다는 것입니다.

데이터 컨텍스트를 인스턴스화하기 전에 라이브러리에서 클래스에 액세스하여 작동하는지 확인하십시오.

다른 팁

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

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

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top