例如我有Poduct
实体:
public class Product : DatabaseEntity
{
public int Id {get; set;}
public int Name {get; set;}
public decimal Price {get; set;}
...
}
这个想法是我想为产品创建类似产品的可编辑集合。所以它就像多对多但在同一个实体 - 产品所以我更新了我的模型,如下所示:
public class Product : DatabaseEntity
{
public int Id {get; set;}
public int Name {get; set;}
public decimal Price {get; set;}
public ICollection<Product> SimilarProducts { get; private set; }
public void AddSimilar(Product product)
{
SimilarProducts.Add(product);
}
...
}
我也更新了我的DbContext
课程:
modelBuilder.Entity<Product>()
.HasMany(p => p.SimilarProducts)
.WithOptional()
.WillCascadeOnDelete(false);
实施编辑产品操作:
public ActionResult Edit(ProductEditModel productEditModel)
{
if(!string.IsNullOrEmpty(productEditModel.SelectedSimilarProductLinkName))
{
var similarProduct = _productRepository.GetProduct(productEditModel.SelectedSimilarProductId);
product.AddSimilar(similarProduct);
}
_productRepository.AddProduct(product);
}
void IProductRepository.AddProduct(产品产品);
public void AddProduct(Product product)
{
_repository.InsertOrUpdate(product);
}
但是我得到了奇怪的结果:Product_Id
在我的数据库中添加了产品字段,并且没有ProductProduct
像通常的多对多实体实现那样存储相关产品 ID 的表或类似的东西。如何手动创建此表?我错过了什么或做错了什么?