Van*_*nel 5 c# sql-server entity-framework
我正在使用.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
}
Run Code Online (Sandbox Code Playgroud)
使用这两个配置类:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行它时,我得到以下消息,我不明白:
Product_ProductionOrders :: Multiplicity在"Product_ProductionOrders"关系中的角色'Product_ProductionOrders_Source'中无效.由于"从属角色"中的所有属性都可以为空,因此"主体角色"的多重性必须为"0..1".
我试图表达的模型是:
生产订单可以包含零个或一个产品.产品可以是一个或n个生产订单.
我不知道如何将Principal Role的多重性设置为'0..1'.
Iva*_*oev 11
嗯,这只是流利API中使用的不同术语的问题.映射是:
multiplicity 1 => Required
multiplicity 0..1 => Optional
Run Code Online (Sandbox Code Playgroud)
根据你的模型,你需要改变
.WithRequired(po => po.Product)
Run Code Online (Sandbox Code Playgroud)
至
.WithOptional(po => po.Product)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3822 次 |
| 最近记录: |