c# - 将实体映射到视图和表格
问题描述
考虑下面的模型。我有一个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
指向视图。
现在我想执行插入、更新和删除。这带来了一个问题,因为无法使用带有 an 的视图来OUTER APPLY
进行这些更改。我已经尝试为此使用查询类型,但您不能将实体同时定义为查询类型和实体类型。这样做会导致我出错。因此,将 a 添加TableAttribute
到实际表中,例如Order
结合 withmodelBuilder.Query<Order>().ToView("SelectOrder");
是行不通的。
我可以创建一个单独的类 SelectOrder,它映射到视图并将我的 Order 实体映射到表。或者我可以构建一个自定义属性并通过覆盖SqlServerQuerySqlGenerator
.
但在我走上这些道路之前......真的不可能将实体映射到用于选择的视图和用于插入、更新和删除的表吗?
解决方案
由于 .NET 5 预览版已发布,因此可以支持查询分离和更新映射
推荐阅读
- java - 从存储过程中获取输出参数而不调用execute()
- python - PySpark ALSModel 加载在 Azure ML 服务上部署失败,并出现错误 java.util.NoSuchElementException: Param blockSize 不存在
- c# - 您如何编写统一 ui 按钮触摸控件来接收输入?
- heroku - 如何在heroku上安装SVN?
- javascript - 如何使用 Fetch API 获取/设置多个“Set-Cookie”标头?
- .net-core - 未找到 ODataRoute
- javascript - Javascript 在列表中查找
- python-3.x - 如何在python中修改和打印列表项?
- reactjs - 在反应中使用表单中的useState钩子时出错
- azure - AADB2C 自定义策略 - 本地和社交帐户签名策略,带有拆分电子邮件验证和注册