使用 .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();
}
假设我有以下 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();
}