У меня есть общая реализация репозитория поверх Linq2SQL.По сути, он использует таблицу для контекста данных, чтобы получить IQueryable, а затем выполнить запросы к нему:
private readonly IQueryable _queryable;
private readonly DataContext _context;
public Repository(DataContext context)
{
_context = context;
_queryable = context.GetTable().AsQueryable();
}
Проблема заключается в наследовании.Если у меня есть две унаследованные таблицы, выдается исключение:
[InheritanceMapping(Code="1", Type=typeof(Staff))]
[InheritanceMapping(Code="2", Type=typeof(Resident), IsDefault=true)]
public class Person { }
public class Resident : Person { }
public class Staff : Person { }
Теперь при создании репозитория создается исключение:
System.InvalidOperationException: Не удалось получить таблицу для подтипа наследования 'Staffвместо этого попробуйте Table of Person.
Теперь история на этом не заканчивается.Я МОГУ переключиться на использование репозитория для запросов, но когда дело доходит до сохранения объектов, мне нужно использовать производный тип (например, Staff), иначе будет выдано другое исключение, поэтому я получаю два разных экземпляра репозитория: один для сохранения иОперации обновления и другие для запросов, в то время как одного должно быть достаточно.
Любая помощь очень ценится.