2017-04-04 14 views
2

私はC#ライブラリを.NET Framework 4.6.2とEntity Framework 6.1.3 Code Firstで開発してSQL Server 2012データベースで使用しています。プリンシパルロールの多重度は0..1でなければなりません

私はこの2つのクラスがあります。これらの2つの構成クラスで

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はロールでは無効です 'Product_ProductionOrders_Sour 「cee」の関係 「Product_ProductionOrders」。 従属ロールのすべてのプロパティはnullableであるため、プリンシパルロールの多重度は でなければなりません。

私が表現しようとしているモデルは次のとおりです。

製造指図がゼロまたは1つの製品を持つことができます。また、製品は1つまたは複数の製造指図になることがあります。

プリンシパルロールの多重度を「0..1」に設定する方法がわかりません。

答えて

6

これは、流暢なAPIで使用されている別の用語の問題です。マッピングは次のとおりです。あなたのモデルによれば、あなたは

.WithOptional(po => po.Product) 

.WithRequired(po => po.Product) 

を変更する

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

必要

関連する問題