C# Net核心:在实体框架中将两个类成员映射到一列

C# Net核心:在实体框架中将两个类成员映射到一列,c#,entity-framework,asp.net-core,.net-core,C#,Entity Framework,Asp.net Core,.net Core,如何将实体框架数据库中的两个类成员映射到一列?可能吗? 我尝试了以下代码并收到错误 modelBuilder.Entity<Product>(entity => { entity.Property(e => e.Id) .HasColumnName("ProductId"); entity.Property(e => e.ProductId)

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

        modelBuilder.Entity<Product>(entity =>
        {

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

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

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

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

entity.Property(e => e.Id)
    .HasColumnName("ProductId");
entity.Ignore(e => e.ProductId);
这里需要注意的是,在编写将通过EF转换为SQL的Linq表达式时,需要避免使用任何被忽略的属性


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

听起来像一个(例如:
Id
)应该用
[NotMapped]
修饰,并且有一个getter/setter镜像其他属性。hi@AlwaysLearning在这个链接中,get;设置原因性能问题请在问题中详细说明为什么需要将两个属性映射到一个列,您尝试实现什么?只是为了确保没有。我正在查看以前的代码,一些人使用Id,其他人使用ProductId,因此如果可能,需要在这两种情况下都使用。您是否考虑过将
Id
的所有用法更改为
ProductId
?当两个属性都在同一个实例上更新时,拥有这样两个独立的属性会给EF一个艰难的选择:哪一个是正确的?哪一个应该坚持?排除这种可能性。嗨,Stevepy,问题是如何将两个类成员映射到一个列名(不是一个类成员,忽略另一个);我也希望能够使用这两个类成员,最后一部分“relabel前端代码”是我们试图避免的问题:),我后来被放入程序中,试图解决这个问题,但是,谢谢!这个问题的答案很简单。“你不能”。实体必须将一个属性映射到一个字段。我的观点是,如果在表具有“ProductId”的情况下,您需要“Id”列的全部原因是为了实现通用存储库模式,那么解决方案将是放弃通用存储库。对于只读,您可以将实体绑定到一个同时选择ProductId和ProductId作为Id的视图,但这其中有什么意义呢?
entity.Property(e => e.Id)
    .HasColumnName("ProductId");
entity.Ignore(e => e.ProductId);