Entity framework 6 扩展NopCommerce 3.6模型

Entity framework 6 扩展NopCommerce 3.6模型,entity-framework-6,nopcommerce,Entity Framework 6,Nopcommerce,我需要在Nop数据库中导入一个新表,并且需要像其他表一样创建数据访问层。 该表有一个名为SignatureId的主键列,我的客户端不想更改此名称。 所以我不能从BaseEntity抽象类继承,因为它意味着主键表必须调用“Id” 我的问题是: 创建不是从BaseEntity继承的新域实体类是否有问题?比如: public class Signature { public int SignatureId { get; set; } public string Hash{ get; set; }

我需要在Nop数据库中导入一个新表,并且需要像其他表一样创建数据访问层。 该表有一个名为SignatureId的主键列,我的客户端不想更改此名称。 所以我不能从BaseEntity抽象类继承,因为它意味着主键表必须调用“Id”

我的问题是:

创建不是从BaseEntity继承的新域实体类是否有问题?比如:

public class Signature
{
public int SignatureId { get; set; }

public string Hash{ get; set; }

  public.....
}

也许在实体操作过程中,它一定暗示了这个问题?你能给我一些建议吗?

一个快速的解决方案是同时使用id和signatureId。因此,您将与您的客户和商业保持联系


存储库模式在nopcommerce中用于使用基本实体存储数据。因此,创建一个实体而不从基继承将破坏设计。

我迟到了,但答案是可以的,即使你从基继承。您只需要在下面的映射中忽略它

public class Signature : BaseEntity
{
  public int SignatureId { get; set; }
  public string Hash{ get; set; }
  public.....
}
在映射中,即Nop.Data->mapping

public class SignatureMap : NopEntityTypeConfiguration<Signature>
{
    this.Ignore(c => c.Id);
    this.HasKey(c => c.SignatureId);
}
公共类签名映射:NoEntityTypeConfiguration
{
忽略(c=>c.Id);
this.HasKey(c=>c.SignatureId);
}

简单一点,不要使用SignatureId,而是使用Id…这样做有什么好处,您只需要存储Id…在前端显示上显示SignatureId而不是Id…是的,这将是最好的解决方案,但这是不可能的,因为表签名已在多个应用程序中使用,有一些存储过程使用SeignatureId列select检索数据……那么只有一件事需要手动操作it@user1018697检查下面的“我的答案”您可以忽略Id,但存储库模式使用依赖于Id的查询。因此查询将中断并不会返回数据。@Jeyara它将仅为该实体忽略它。而且NoCommerce
eRepository
不依赖名为
Id
的列,它依赖于类型。上述实体
签名
已从
BaseEntity
继承。那么它会在哪里制造麻烦呢?如果我错了,请纠正我,efrepo中有一个getbyid查询。
返回this.Entities.Find(id)这是实体框架作业,用于检查适当的主键,我们已经指定主键不同。它没有显式地检查名为
Id
的列。它讨论的是主键,而不是名为
Id