您好我有一个以下问题,我正在尝试使用Fluent API解决。
我有两张桌子:
产品: ID int |代码nvarchar(20)| CurrentDetailsID int
ProductDetails ID int | ProductID int |名字navrachar(50)....
现在我的关系有点奇怪,因为: 产品只能包含一个当前产品详细信息(CurrentDetailsID),每个详细信息记录只能链接到一个产品,但产品本身也可以包含多个详细信息(出于历史原因)。
知道如何在流畅的API中存档这种棘手的关系类型吗?
的Seb
答案 0 :(得分:0)
按以下方式定义您的课程:
public class Product
{
public int Id { get; set; }
public string Code { get; set; }
public int CurrentProductDetailId { get; set; }
public virtual ProductDetail CurrentProductDetail { get; set; }
public virtual ICollection<ProductDetail> ProductDetails { get; set; }
}
public class ProductDetail
{
public int Id { get; set; }
public string Name { get; set; }
public int ProductId { get; set; }
public virtual Product Product { get; set; }
}
如果您想使用Fluent API,可以使用以下代码
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>()
.HasMany(t => t.ProductDetails)
.WithRequired(t=>t.Product)
.HasForeignKey(t => t.ProductId);
modelBuilder.Entity<Product>()
.HasRequired(t => t.CurrentProductDetail)
.WithRequiredPrincipal()
.Map(m => m.MapKey("CurrentProductDetailId"));
}
这就是结果: