【发布时间】:2013-06-04 22:01:38
【问题描述】:
例如我有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(Product product);
public void AddProduct(Product product)
{
_repository.InsertOrUpdate(product);
}
但是我得到了奇怪的结果:在我的数据库中添加了 Product_Id 字段,并且没有像 ProductProduct 表或类似存储相关产品 ID 的东西,就像通常的多对多实体实现一样。如何手动创建此表?我错过了什么或做错了什么?
【问题讨论】:
-
@Swell,感谢您的建议。
标签: c# entity-framework many-to-many code-first