Рассмотрим модель ниже.У меня есть Order
класс и OrderLine
класс.Order.TotalAmount
вычисляется через представление, которое выполняет OUTER APPLY
для всех Order.OrderLines
.
[Table("SelectOrder")]
public class Order
{
public decimal TotalAmount { get; set; }
public virtual ICollection<OrderLine> OrderLines { get; set; }
}
[Table("SelectOrderLine")]
public class OrderLine
{
public decimal Amount { get; set; }
public virtual Order Order { get; set; }
}
. Я украсил свои классы TableAttribute
, чтобы позволить Entity Framework Core получать данныеот взглядов до сущности.TableAttribute
фактически указывает вместо этого на представление.
Теперь я хотел бы выполнять вставки, обновления и удаления.Это создает проблему, так как невозможно использовать представление с OUTER APPLY
для этих изменений.Я пытался использовать типы запросов для этого, но вы не можете определить сущность как тип запроса и тип сущности.Это приводит к ошибке для меня.Таким образом, добавление TableAttribute
с фактической таблицей, например, Order
в сочетании с modelBuilder.Query<Order>().ToView("SelectOrder");
, не работает.
Я мог бы создать отдельный класс SelectOrder, который отображается в представление, и сопоставить мою сущность Order сТаблица.Или я мог бы создать собственный атрибут и выполнить некоторую пользовательскую генерацию SQL, переопределив SqlServerQuerySqlGenerator
.
Но прежде чем идти по этим дорогам ... Разве невозможно сопоставить сущность с обоими представлениями длявыбирает и таблицу для вставки, обновления и удаления?