使用.NET MVC&;CodeFirst,在创建父实体时,是否可以使用实体ID的集合而不是对象
本文关键字:实体 ID 可以使 集合 对象 是否 CodeFirst amp NET 使用 创建 | 更新日期: 2023-09-27 18:21:41
假设我有以下domain model
:
public class ProductApplication
{
[Key]
public int Id { get; set; }
[Required(ErrorMessage = "Please enter a title.")]
public string Title { get; set; }
[Required(ErrorMessage = "Please enter a description.")]
public string Description { get; set; }
private ICollection<Product> _products;
public virtual ICollection<Product> Products
{
get { return _products ?? (_products = new Collection<Product>()); }
set { _products = value; }
}
}
在视图中,用户创建一个新的ProductApplication
实体,该实体包含标题、描述和相关产品的(一对多)集合。
由于集合中的每个产品都已经存在于数据库中,我目前正试图使用一组产品ID将实体发布到服务器:
{
"Title": "Foo",
"Description": "Bar",
"Products": [1,2,3] //<-- Product Ids
}
不幸的是,这失败了,因为服务器端控制器期望product
对象的数组;而不是CCD_ 4的阵列。
除了创建自定义业务逻辑之外,是否有一种"本地"方式可以在.NET中实现我想要的方法?
我会创建一个单独的属性来获得您想要的
[NotMapped]
public ICollection<int> ProductIds {
get {
return Products.Select(p => p.ProductId)
.ToList();
}
或者,如果你真的希望它是一个数组。。。。
[NotMapped]
public int[] ProductIds {
get {
return Products.Select(p => p.ProductId)
.ToArray();
}