Я реализован интерфейс для некоторых из моих классов сущностей:Как запросить все таблицы, которые реализуют интерфейс
public partial class Order : IReportable
{
public string TableName { get { return "Order"; } }
}
public partial class Client: IReportable
{
public string TableName { get { return "Client"; } }
}
public interface IReportable
{
string TableName { get; }
}
Затем я добавил это к DbContext:
public virtual DbSet<IReportable> IReportable { get; set; }
Когда я пытаюсь запрашивать все таблицы, которые реализуют этот интерфейс (как показано здесь):
var result = from reportabletable in db.IReportable
where reportabletable.TableName == table_name
select reportabletable
я получаю следующее исключение:
Тип «Report.DataAccess.IReportable» не был отображен. Убедитесь, что тип не был явно исключен с помощью метода Ignore или аннотации данных NotMappedAttribute. Убедитесь, что тип был , определенный как класс, не является примитивным или общим и не наследует от EntityObject.
Меня удивило бы, если бы многие ORM предложили этот тип запроса –
@MarcGravell Вы говорите, что это невозможно? – enb081
Проверьте стратегию наследования для Entity Framework. Я не знаю, возможно ли иметь DbSet, но вы можете получить это с базовым абстрактным классом, возможно, с виртуальным (или абстрактным) свойством TableName. Btw. есть атрибут TableName - проверьте ссылки для стратегий наследования здесь - http://www.entityframeworktutorial.net/code-first/inheritance-strategy-in-code-first.aspx –