【问题标题】:One to One relation is not working in the Nop Commerce Entity framework一对一关系在 Nop Commerce Entity 框架中不起作用
【发布时间】:2026-01-04 16:05:02
【问题描述】:

我正在使用 nop Commerce 2.30。我在 nopCommerce 数据库中创建一个表并设置

另一个表中的 1:1 关系。

我的桌子是议程。请看我的表结构。

请看数据库图。

BaseEntity 类

 /// <summary>
/// Base class for entities
/// </summary>
public abstract partial class BaseEntity
{
    /// <summary>
    /// Gets or sets the entity identifier
    /// </summary>
    public virtual int Id { get; set; }

请查看我的模型。我在我的议程类中添加了一个新的属性 ID。但它是

显示警告消息此属性已经存在它的基类。

命名空间 Nop.Core.Domain.Agendas

{

public partial class Agenda : BaseEntity

{
    public virtual int Id { get; set; }

    public virtual string Name { get; set; }

    public virtual List<Days> Days { get; set; }
}

}

映射

`公共部分类 AgendaMap : EntityTypeConfiguration

{

    public AgendaMap()
    {

        this.ToTable("Agenda");

        this.HasKey(a => a.Id);
    }
}`

然后我尝试在议程表中插入。

我收到此错误消息

请帮忙。

【问题讨论】:

  • 您是否通过调试检查了 ConferenceId 不为空?
  • 不,它不为空。我给的conferenceId是52。但是请看议程的模型类。 Id 属性未定义。 Id 属性是从 BaseEntity 类中获取的。不在议程模型中。我尝试在议程 ID 中插入相同的产品表 ID。

标签: asp.net-mvc asp.net-mvc-3 linq entity-framework nopcommerce


【解决方案1】:

从您的图表来看,您的议程表设计中似乎没有键,而您在代码中将其设置为键。请尝试以下操作:

  1. 在您的 DB 表设计中,将 Id 设置为主键,确保将其设置为自动增量。
  2. 添加一个名为“ProductId”的新字段,这是应该链接到 Product 表的 Id 字段的键。
  3. 相应地更新您的代码。 :)

【讨论】:

  • 感谢您的宝贵回复。但我想要一对一的关系
  • 不要在 Agenda 类中定义 Id,它已经从 BaseEntity 获取。如果要将其链接到产品,那么除了议程自己的 Id 之外,您还应该使用 ProductId。仍然是 1-1。