gpt4 book ai didi

c# - 尝试迁移时无法映射模型属性中的属性列表

转载 作者:行者123 更新时间:2023-11-30 21:27:42 25 4
gpt4 key购买 nike

我正在 MVC5 中设置一个迁移,它有一个名为“Order”的模型,具有 3 个属性,其中一个是 PizzaModel 类。 PizzaModel 有下面的代码,我想做的是在一个订单中启用多个比萨饼实例,这样一个订单可以有多个比萨饼。

public class PizzaModel
{
[Key]
public int Id { get; set; }
public List<PizzaSet> Pizzas { get; set; }
public int Cost { get; set; }


}
public class PizzaSet
{
public enum Toppings { GreenOlives, BulgarianCheese, Onions, Mushrooms, Peppers, Basil, Sausage, Pepperoni, Ham, Beef }
public enum Sauces { BBQ, Islands }
public enum Size { Personal, Medium, Family }

public Size PizzaSize { get; set; }
public List<Sauces> PizzaSauces { get; set; }
public List<Toppings> PizzaToppings { get; set; }
}

这是一种错误的迁移方法吗?

最佳答案

您的 PizzaSet 类正在使用枚举列表,它不会映射到 EF 中的数据库架构。

如果你想为 SaucesToppings 使用枚举,并且想允许多项选择,你需要使用 [Flags]枚举的属性,将其视为位域。

public class PizzaSet
{
[Flags]
public enum Toppings { GreenOlives = 1, BulgarianCheese = 2, Onions = 4, Mushrooms = 8, Peppers = 16, Basil = 32, Sausage = 64, Pepperoni = 128, Ham = 256, Beef = 512 }

[Flags]
public enum Sauces { BBQ = 1, Islands = 2 }

public enum Size { Personal, Medium, Family }

public Size PizzaSize { get; set; }
public Sauces PizzaSauces { get; set; }
public Toppings PizzaToppings { get; set; }
}

然后 ToppingsSauces 成为可能值的位域(注意值需要表示唯一的位)

要选择多个浇头:-

PizzaSet ps = new PizzaSet();

ps.Toppings = Toppings.GreenOlives | Toppings.Peppers;

但是,考虑到您的浇头和酱汁列表可能会随着时间的推移而变化,最好有一个单独的表来列出浇头,并使用连接表(因为它是 EF Core)

关于c# - 尝试迁移时无法映射模型属性中的属性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57344222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com