主要角色的多重性必须为0..1

时间:2017-04-04 10:26:42

标签: c# sql-server entity-framework

我正在使用.NET Framework 4.6.2和Entity Framework 6.1.3代码开发一个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 :: Multiplicity在Role中无效   &#39; Product_ProductionOrders_Source&#39;谈恋爱   &#39; Product_ProductionOrders&#39 ;.因为所有的属性   依赖角色是可空的,主角的多重性必须是   be&#39; 0..1&#39;。

我试图表达的模型是:

生产订单可以包含零个或一个产品。并且产品可以是一个或n个生产订单。

我不知道如何将主要角色的多重性设置为&#39; 0..1&#39;。

1 个答案:

答案 0 :(得分:11)

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

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

根据您的型号,您需要更改

.WithRequired(po => po.Product)

.WithOptional(po => po.Product)