AngularJS-如何在编辑和放置期间添加子对象

AngularJS-如何在编辑和放置期间添加子对象,angularjs,entity-framework,asp.net-web-api2,Angularjs,Entity Framework,Asp.net Web Api2,我开始学习AngularJS,它的后端有Web API和EF。我有一个编辑表单,它通过返回Boat对象的GET请求填充。船的属性之一是图像数组 如果用户向Boat添加图像,那么我需要在更新Boat时将每个新图像的记录插入数据库。但显然不是船在编辑之前已经拥有的图像 当前的Web API功能是: public async Task<IHttpActionResult> Put(int id, Boat boat) 看来我可以: a在放置之前将任何新添加的图像推送到$scope.Boa

我开始学习AngularJS,它的后端有Web API和EF。我有一个编辑表单,它通过返回Boat对象的GET请求填充。船的属性之一是图像数组

如果用户向Boat添加图像,那么我需要在更新Boat时将每个新图像的记录插入数据库。但显然不是船在编辑之前已经拥有的图像

当前的Web API功能是:

public async Task<IHttpActionResult> Put(int id, Boat boat)
看来我可以:

a在放置之前将任何新添加的图像推送到$scope.Boat.images。然后在WebAPI函数中,通过接收的Boat.Images循环,检查该映像是否存在数据库记录,如果不存在记录,则将该映像记录添加到数据库中。这似乎有点不经济,因为我正在遍历每个现有的图像,并检查它是否已经存在于数据库中

b用PUT发送一个单独的对象newImages。那么我猜Web API函数应该是:

public async Task<IHttpActionResult> Put(int id, Boat boat, string[] newImages)
这样做的好处是不必检查哪些图像已经存在,哪些图像是新图像。新图像中的所有内容都会添加到数据库中。但是,从AngularJS的角度来看,将新图像从船上分离是不是很奇怪

你会做a或b还是。。。c其他方法?

我会做一个更适合Restful方法的测试

现在,图像可以是一个复杂对象数组,而不是字符串数组,因此您将拥有一个属性ID

然后在WebAPI端,只需添加未设置ID的图像

var newImages = Boat.Images.Select(x => x.Id == null);

你能解释一下你所说的更适合Restful方法的意思吗?检查没有Id的图像有一个很好的地方——它只需要:var newImages=Boat.images.Wherex=>x.Id==0;