Я пытаюсь сопоставить мою иерархию наследования с БД, используя Linq для SQL:
Наследование такое: классы POCO, без каких-либо атрибутов LINQ to 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.SimpleStage "."
Ни указание SimpleStage, ни SimpleStage в файле отображения не помогают - среда выполнения продолжает выдавать различные типы ошибок.
DC создается так:
StreamReader sr = new StreamReader(@"MappingFile.map");
XmlMappingSource mapping = XmlMappingSource.FromStream(sr.BaseStream);
DataContext dc = new DataContext(@"connection string", mapping);
Если Linq to SQL не поддерживает это, не могли бы вы, пожалуйста, посоветовать другой ORM, который поддерживает.
Заранее спасибо,
Привет!
Ксения