У меня есть пейджинг и я whant, чтобы выбрать количество в одном запросе с помощью простого SQL (EF7):EF основной пейджинг. Выберите общее количество в одном запросе
var selectSql = " SELECT TotalCount = COUNT(*) OVER(), E.* FROM [table] E ...";
var rows = context.Set<EventTable>().FromSql<EventTable>(selectSql, parameters.Select(p => p.Value).ToArray()).ToArray();
Это настоящих работы, но я не TOTALCOUNT недвижимости в моем EventTable class, потому что я не хочу этого свойства в базе данных.
Я пытаюсь получить TOTALCOUNT имущества от лица трекера:
var row = rows.First();
var entity = context.Entry(row);
var totalCount = entity.Property<int>("TotalCount").CurrentValue;
Но тогда я получаю ошибку: Свойства «TotalCount» от типа объекта «EventTable» не может быть найден. Убедитесь, что свойство существует и включено в модель.
Тогда я пытаюсь добавить свойство в модели следующим образом:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<EventTable>(b => b.Property<int>("TotalCount"));
}
Он отлично работает, когда я whant, чтобы выбрать, но он бросает исключение на вставке, так как столбец в базе данных не существует. И EF добавит эту колонку при миграции. Но я замечаю, что если до создания миграции я добавляю строку b.Property («TotalCount»); в класс ModelSnapshot он избежит добавления свойства при миграции. Но проблема с вставкой все еще существует.
Я пытаюсь создать еще один класс:
[NotMapped]
public class EventSearchTable : EventTable
{
[Column("total_count")]
[Required]
public int TotalCount { get; set; }
}
, а затем сделать это:
var rows = context.Set<EventSearchTable>().FromSql<EventSearchTable>(..);
Он работает на EF6, но не на EF7, я получил сообщение об ошибке: Значение не может быть пустым. Имя параметра: entityType Поскольку в моем DbContext нет объекта. Если я добавлю класс EventSearchTable в свой DbContext, тогда он будет ожидать столбцы, такие как дискриминатор и т. Д., И создаст таблицу в миграциях.
Любые идеи о том, как получить имущество TotalCount?
Извините, если мой английский сломан.
Это потерпит неудачу, когда результирующий набор пуст, хотя (по крайней мере, в ядре EF). Страница не является нулевой, но имеет внутреннее исключение NullReferenceException. –
Он не работает, когда набор результатов пуст. Любое решение для этого? –