我正在使用.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);
}
}
但是,当我尝试运行它时,收到以下消息,但我不理解:
我要代表的模型是:
一个生产订单可以有零个或一个产品。一个产品可能处于一个或n个生产订单中。
我不知道如何将主体角色的多重性设置为“0..1”。
最佳答案
好吧,这只是流利的API中使用的不同术语的问题。映射为:
multiplicity 1 => Required
multiplicity 0..1 => Optional
根据您的模型,您需要进行更改
.WithRequired(po => po.Product)
到
.WithOptional(po => po.Product)
关于c# - 主体角色的多重性必须为0..1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43204585/