使用 .NET MVC 和 CodeFirst,在创建 parent 实体时是否可以使用 collection 实体 ID 而不是 objects?

Using .NET MVC & CodeFirst, is it possible to use a collection of entity ids rather than objects when creating a parent entity?

假设我有以下 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 实体,其中包含标题、描述和 (one-to-many) collection 相关产品。

由于 collection 中的每个产品都已存在于数据库中,我目前正在尝试 post 使用产品 ID 数组将实体发送到服务器:

{
"Title": "Foo",
"Description": "Bar",
"Products": [1,2,3] //<-- Product Ids
}

不幸的是,这失败了,因为 server-side 控制器需要一个 product objects 的数组;不是 int.

的数组

如果没有创建自定义业务逻辑,是否有 "native" 方法在 .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();

    }