c# - 如何在多对多模型中添加成分列表?
问题描述
我有供应商和成分的模型,他们可以看到对方。我有一份成分清单,我需要以某种方式将其添加给供应商。无法理解该怎么做。
public void AddIngredientsToVendor(VendorIngredientsRegistrationModel model)
{
// Ingredients, that I want to add to wendor, Ids: [57, 59, 61, 62]
List<Ingredient> ingredients = _repository.Fetch<Ingredient>(e => model.IngredientIds.Contains(e.Id),
e => e.Include(p => p.VendorIngredients)).ToList();
var vendor = _repository.First<Vendor>(
(e => e.Id == model.VendorId),
e => e.Include(m => m.Ingredients));
// How to add ingredients to Vendor?
_repository.Update(vendor);
_repository.SaveChanges();
}
供应商成分.cs
public class VendorIngredient
{
[ForeignKey(nameof(VendorId))]
public Vendor Vendor { get; set; }
public long VendorId { get; set; }
[ForeignKey(nameof(IngredientId))]
public Ingredient Ingredient { get; set; }
public long IngredientId { get; set; }
}
供应商.cs
public class Vendor : BaseNetworkLinkedEntity
{
public Vendor()
{
Ingredients = new List<VendorIngredient>();
}
[MaxLength(150)]
public string VendorCompanyName { get; set; }
public ICollection<VendorIngredient> Ingredients { get; set; }
}
解决方案
假设 vendor 在AddIngredientsToVendor
方法中的上下文中,如果您愿意将 vendor 上的集合类型更改为 just ,则应该像下面这样简单Ingreedient
。供应商成分的概念在这里似乎失去了价值,因为它所做的只是将供应商名称附加到供应商集合中的每个成分
public void AddIngredientsToVendor(VendorIngredientsRegistrationModel model)
{
// Ingredients, that I want to add to wendor, Ids: [57, 59, 61, 62]
List<Ingredient> ingredients = _repository.Fetch<Ingredient>(e => model.IngredientIds.Contains(e.Id),
e => e.Include(p => p.VendorIngredients)).ToList();
vendor.Ingredients = ingredients;
_repository.Update(vendor);
_repository.SaveChanges();
}
如果您想保留它,VendorIngredient
您需要编写一个同时接受成分和供应商的方法,然后将其映射到VendorIngredient
类
推荐阅读
- java - 如何验证俄语字母?
- swift - 在内部函数中传递 CVarArg
- terraform - 将字符串或数组转换为 Terraform 中的映射?
- javascript - 为什么在将图像加载到画布时使用 style.display = 'none'
- azure - 我无法在 Azure 容器注册表中选择图像
- javascript - mongoose mongodb - 删除所有条件为真的地方,除了一个
- c - Wno-pointer-arith 标志在不同 gcc 版本之间的处理方式不同
- excel - 如何防止用户在 Google 表格中使用 Excel 电子表格
- reactjs - 如何设置抽屉组件中未显示的初始屏幕?
- matlab - 在 MATLAB 中索引一个更大的向量