使用.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中实现我想要的方法?

使用.NET MVC&;CodeFirst,在创建父实体时,是否可以使用实体ID的集合而不是对象

我会创建一个单独的属性来获得您想要的

[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();
    }