【发布时间】:2019-09-24 23:32:55
【问题描述】:
如何将两个类成员映射到实体框架数据库中的一列?是否可以? 我尝试了以下代码并收到错误
modelBuilder.Entity<Product>(entity =>
{
entity.Property(e => e.Id)
.HasColumnName("ProductId");
entity.Property(e => e.ProductId)
.HasColumnName("ProductId");
错误运行时间:
“Product.Id”和“Product.ProductId”都映射到“Product”中的“ProductId”列,但配置了不同的价值生成策略。'
我们正在尝试解决这个问题,否则通用存储库将不得不使用表达式构建器
Net Core: Generic Repository Primary Id Key Performance in Entity Framework
他们的顶级解决方案不起作用。
var idName = _context.Model.FindEntityType(typeof(TEntity))
.FindPrimaryKey().Properties.Single().Name;
【问题讨论】:
-
听起来像一个(例如:
Id)应该用[NotMapped]装饰,并有一个反映另一个属性的getter/setter。 -
hi @AlwaysLearning 询问讨论到这个链接,get;set;导致性能问题stackoverflow.com/questions/57386900/…
-
您能否详细说明为什么您需要将 2 个属性映射到单个列,您想实现什么?只是为了确保没有XY problem。
-
嗯,我正在查看以前的代码,有些人使用 Id,其他人使用 ProductId,所以如果可能的话,需要在这两种情况下工作
-
您是否考虑过将
Id的所有用法更改为ProductId?当它们都在同一个实例上更新时,拥有两个像这样的独立属性会给 EF 一个艰难的选择:哪个是正确的?应该坚持哪一个?消除这种可能性。
标签: c# entity-framework asp.net-core .net-core