2009-02-28 6 views
0

내가 SQL에 Linq에를 사용하여 DB를 내 상속 계층 구조를 매핑하기 위해 노력하고있어 SQL로지도 상속

public interface IStage 
{ ... } 

public abstract class SimpleStage<T> : IStage where T : Process 
{ ... } 

public class ConcreteStage : SimpleStage<ConcreteProcess> 
{ ... } 
내가 할 런타임에서

<Database Name="NNN" xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007"> 
    <Table Name="dbo.Stage" Member="Stage"> 
    <Type Name="BusinessLogic.Domain.IStage"> 
     <Column Name="ID" Member="ID" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" AutoSync="OnInsert" /> 
     <Column Name="StageType" Member="StageType" IsDiscriminator="true" /> 
     <Type Name="BusinessLogic.Domain.SimpleStage" IsInheritanceDefault="true"> 
     <Type Name="BusinessLogic.Domain.ConcreteStage" IsInheritanceDefault="true" InheritanceCode="1"/> 
     </Type> 
    </Type> 
    </Table> 
</Database> 

오류 :

다음은 매핑 System.InvalidOperationException이 처리되지 않은 메시지 = "매핑 문제였다 '형식 매핑에 대한 런타임 유형을 찾을 수 없습니다 BusinessLogic.Domain.Simpl eStage '. "

매핑 파일에 SimpleStage 또는 SimpleStage <T>을 지정하지 않아도 런타임에서 다른 유형의 오류가 발생합니다.

DC는 다음과 같이 생성된다 :이 기능을 지원하지 않습니다 Linq는 SQL에 경우

StreamReader sr = new StreamReader(@"MappingFile.map"); 
XmlMappingSource mapping = XmlMappingSource.FromStream(sr.BaseStream); 
DataContext dc = new DataContext(@"connection string", mapping); 

, 당신은,하지 다른 ORM을 알려 주시기 바랍니다 수 있습니다. 미리 감사드립니다.

감사합니다!

크세 니아

답변

0

당신은 파일에 대한 참조를 추가하고 또한 당신이 문을 사용에 대한 참조를 가져? 또는 정규화 된 클래스 이름을 사용합니까?

+0

을 쓸 때 매핑 파일에 문제가 수정되었습니다 있도록 IL에서 그 이름이 SimpleStage'1 < ...>처럼 보이는, 당신에 대해 무엇을 참조 이야기? LINQ 관련 특성을 사용하여 클래스를 꾸미는 중이라면 POCO 클래스를 사용하고 XML 파일로만 매핑을 제공합니다. –

+0

미안 해요. 프로젝트 -> 참조 추가를 선택한 다음 BusinessLogic.Domain.ISTA 어셈블리를 선택하는 것입니다. 또한 BusinessLogic.Domain을 사용하는 것과 같이 라이브러리를 가져옵니다. –

+0

아 물론 물론 BL 어셈블리에 대한 참조를 추가하고 다른 모든 상속하지 않는 엔터티의이 상속 계층 구조 매핑을 사용하지 않고 –

0

SimpleStage의 일반적인 유형 T 때문일 수 있습니다. T가 일반적인 경우 SimpleStage의 매핑 조회 테이블을 내부적으로 생성 할 수 없습니다.

+0

예, 또한 일반 때문에 생각합니다. 하지만 어쨌든 다른 ORM을 사용하여 매핑을 수행하는 방법이 있는지 궁금 해서요. –

1

제네릭 클래스의 일리노이를 살펴본 후에 직접 답을 찾았습니다. 내가, 내가 확실히 이해하지 못했다 죄송

<Type Name="BusinessLogic.Domain.SimpleStage`1" ...