【问题标题】:Multiplicity of the Principal Role must be 0..1主要角色的多重性必须为 0..1
【发布时间】:2017-04-04 19:02:38
【问题描述】:

我正在使用 .NET Framework 4.6.2 和 Entity Framework 6.1.3 Code First 开发一个 C# 库,以便在 SQL Server 2012 数据库中使用它。

我有这两个类:

public class Product
{
    public int ProductId { get; set; }

    // Omitted for brevity

    public virtual ICollection<ProductionOrder> ProductionOrders { get; set; }
}

public class ProductionOrder
{
    public int ProductionOrderId { get; set; }
    public int? ProductId { get; set; }

    // Omitted for brevety

    public virtual Product Product { get; set; }

    // Omitted for brevity
}

使用这两个配置类:

class ProductionOrderConfiguration : EntityTypeConfiguration<ProductionOrder>
{
    public ProductionOrderConfiguration()
    {
        HasKey(po => po.ProductionOrderId);

        Property(c => c.ProductionOrderId)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        Property(po => po.ProductionOrderId)
            .IsRequired();

        Property(po => po.ProductId)
            .IsOptional();

        // Omitted for brevity
    }
}

class ProductConfiguration : EntityTypeConfiguration<Product>
{
    public ProductConfiguration()
    {
        HasKey(p => p.ProductId);

        Property(p => p.ProductId)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        // Omitted for brevity

        HasMany(p => p.ProductionOrders)
            .WithRequired(po => po.Product)
            .HasForeignKey(p => p.ProductId);
    }
}

但是,当我尝试运行它时,我收到以下我不理解的消息:

Product_ProductionOrders: : 多重性在角色中无效 关系中的“Product_ProductionOrders_Source” 'Product_ProductionOrders'。因为所有属性在 Dependent Role 可以为空,Principal Role 的多样性必须 为“0..1”。

我要代表的模型是:

生产订单可以有零个或一个产品。一个产品可能有一个或 n 个生产订单。

我不知道如何将 Principal Role 的多重性设置为 '0..1'。

【问题讨论】:

    标签: c# sql-server entity-framework


    【解决方案1】:

    嗯,这只是 Fluent API 中使用的不同术语的问题。映射为:

    multiplicity 1     => Required
    multiplicity 0..1  => Optional
    

    根据你的模型,你需要改变

    .WithRequired(po => po.Product)
    

    .WithOptional(po => po.Product)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-30
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      相关资源
      最近更新 更多