这是我一直在做的一个小练习,习惯于使用“Code First” - 方法进行编码。 实际上,如果我能“保守地”“数据库优先”这样做,我想,我会更快地设置它,但是我不会对这些新东西有所了解,所以我想尝试一下。 这些是我在我的应用程序中需要的实体:
现在插入和更新物品和价格,这对我有用,我的问题是食谱;我还不知道如何编写配方-POCO(我认为包含列表的virtual
甚至可能是错误的)
我写了POCO课程:
档案:
public class Item
{
public int ID { get; set; }
[Required(ErrorMessage = "Please enter a title for this item.")]
[MaxLength(127)]
public string Title { get; set; }
[Required(ErrorMessage = "Please enter a descriptive text for this item.")]
[MaxLength(4000)]
public string Description { get; set; }
}
ITEMPRICE:
[DataContract]
public class ItemPrice
{
public int ID { get; set; }
[Required(ErrorMessage = "You need to select an item for this price.")]
[DataMember(IsRequired = true)]
public int ItemID { get; set; }
[ForeignKey("ItemID")]
public virtual Item Item { get; set; }
[Required(ErrorMessage = "You need to set a price for this item.")]
[DataMember(IsRequired = true)]
public Decimal Price { get; set; }
[Required(ErrorMessage = "You need to provide a date and time for the price for this item.")]
[DataMember(IsRequired = true)]
public DateTime Time { get; set; }
}
ItemRecipe:
[DataContract]
public class ItemRecipe
{
public int ID { get; set; }
[Required(ErrorMessage = "You need to select an item for this recipe.")]
[DataMember(IsRequired = true)]
public int ItemID { get; set; }
[ForeignKey("ItemID")]
public virtual Item TargetItem { get; set; }
public virtual List<Tuple<Item, int>> Ingredients { get; set; }
}
那么有人能指出我需要如何设置它吗? 另外,我如何告诉这个元组列表,它的item-part实际引用了一个不能在列表中出现两次的现有项?这甚至可以仅通过数据注释完成吗?如果不是我需要什么?
基本上我只想访问这个项目中其他实体的配方,我使用通用存储库来检索/操作值。我使用的api控制器只有简单的Get- / Post- / Put- / Delete-方法,所以更新或创建一个配方我会去覆盖它(不是逐个插入成分项目数量)。