Net Core:将两个类成员映射到实体框架中的一列



如何将两个类成员映射到实体框架数据库中的一列?可能吗? 我尝试了以下代码并收到错误

modelBuilder.Entity<Product>(entity =>
{
entity.Property(e => e.Id)
.HasColumnName("ProductId");
entity.Property(e => e.ProductId)
.HasColumnName("ProductId");

错误运行时间:

"Product.Id"和"Product.ProductId"都映射到"产品"中的"产品Id"列,但配置了不同的价值生成策略。

我们正在尝试解决此问题,否则通用存储库将不得不使用表达式生成器

网络核心:实体框架中的通用存储库主 ID 关键性能

他们的首要解决方案不起作用。

var idName = _context.Model.FindEntityType(typeof(TEntity))
.FindPrimaryKey().Properties.Single().Name;

通用存储库是实体框架的反模式。老实说,他们不值得麻烦。

但是,要在实体中映射 ProductID 列,请执行以下操作:

entity.Property(e => e.Id)
.HasColumnName("ProductId");
entity.Ignore(e => e.ProductId);

这里的问题是,在编写将通过 EF 到 SQL 的 Linq 表达式时,需要避免使用任何忽略的属性。

或者,我建议删除实体中的 ProductId 字段,只需在前端代码和任何序列化程序使用的视图模型和 DTO 中重新标记该字段,设置 Automapper 来转换 ID 列。

最新更新