我首先使用Entity框架代码,我想从我的代码生成DB,如下所示: 我有2个实体类,例如:
Product {
public int id;
public int name;
}
Month{
public int year;
public int month;
}
现在我要创建一个“报告”课程
Report{
public Product product;
public Month month;
public decimal Price;
}
我尝试在DbContext
中添加复合主键protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Report>().HasKey(t => new { t.Product.ID, t.Month.ID });
}
但EF告诉'报告'必须有来自原始类型的主键(例如int,char ...) 我该如何解决这个问题?
答案 0 :(得分:2)
您需要将复合键添加到Report类中。您还需要Month类的标识符。以下语法可能不是100%。
public class Report
{
[Key(Order=0)]
public int ProductId { get; set; }
[Key(Order=1)]
public int MonthId { get; set; }
public Product product { get; set; }
public Month month { get; set; }
public decimal Price { get; set; }
}