这是我的代码:
namespace MyProject.Models.Database
{
public class Recipe
{
public Guid Id { get; set; } = Guid.NewGuid();
public string Name { get; set; }
public string? Description { get; set; }
public string? Picture { get; set; }
public int Worktime { get; set; }
public int? Cooktime { get; set; }
public int Difficulty { get; set; }
public int Portions { get; set; }
public List<Ingredient> Ingredients { get; set; }
}
public class Ingredient
{
public Guid Id { get; set; } = Guid.NewGuid();
public Guid IngredientId { get; set; }
public int Qty { get; set; }
public string QtyUnit { get; set; }
}
}
我想要"Recipe"包含"成分"类型的许多元素。我读过一些关于一对一和多对多的东西,但我就是不明白…
任何想法?thx
一个食谱可以包含多种食材,一种食材也可以出现在许多食谱中。这是一个多对多关系。
您需要做的是创建一个包含Id
,RecipeId
,IngredientId
的新类。将该类命名为RecipeIngredient。在db上下文中创建DbSet<RecipeIngredient>
时,将表命名为RecipesIngredients
。
RecipeIngredient
中属性的数据类型应该是什么
Id
属性将是主键,您可以决定数据类型。
RecipeId
将是Recipe的外键,因此它需要与Recipe的主键(在您的示例中是Guid
)具有相同的数据类型。
IngredientId
将是Ingredient
的外键,因此在您的示例中数据类型将再次为Guid
。
请注意,您可以创建一个组合键,而不是将Id
放在RecipeIngredient中。
你应该什么时候做?→
我建议你学习不同的关系,以及如何使用c#和实体框架核心应用它们->
祝你学习顺利!当你觉得你不理解一个话题时,不要担心,也不要气馁,你只是需要更多的经验。继续保持良好的工作:)