我尝试使用EntityFramework添加一些实体。 我需要和图像一样的模型 我创建了两个类:
public class PriceOfDish
{
[Key]
public virtual List<Dish> Dish_ID { get; set; }
[Key]
public DateTime DateTime { get; set; }
public decimal Price { get; set; }
}
public class Dish
{
[Key]
public int Dish_ID { get; set; }
public string DishName { get; set; }
public string Description { get; set; }
public virtual FoodCategory FoodCategory_ID { get; set; }
public virtual Feature Feature_ID { get; set; }
public virtual ICollection<OrderedDishes> Orders { get; set; }
}
使用FluentAPI尝试设置主键:
builder.Entity<PriceOfDish>()
.HasKey(t => new {t.Dish_ID, t.DateTime});
在更新DB期间,我收到错误消息:&#34;属性&#39; Dish_ID&#39;不能用作实体的关键属性&test; testFOef.PriceOfDish&#39;因为属性类型不是有效的键类型。只有标量类型,字符串和字节[]是受支持的键类型。&#34;。 但为什么?你能解释一下吗?谢谢你的帮助
答案 0 :(得分:5)
就像错误一样,您使用List<Dish>
作为主键的类型。您必须像往常一样使用标量类型(值类型)或byte []。
对您而言,解决方案是创建一个Dish_ID
类型的int
。
public class PriceOfDish
{
[Key]
public int Dish_ID { get; set; }
[Key]
public DateTime DateTime { get; set; }
[ForeignKey("Dish_Id")]
public virtual Dish Dish { get; set; }
public decimal Price { get; set; }
}
答案 1 :(得分:2)
您正在尝试将List<Dish> Dish_ID
设置为表格的键。
但这不受支持。它也没有多大意义。 Dish
个列表中只有一个Price
?我想你想把int Dish_ID
放在那里