我正在尝试更新user
及其对应的items
,但是我的行为很奇怪。更具体地说,user
正在更新,但是items
被添加到items
表中,并且该表中已经存在的先前items
具有{{ UserId
中的1}},以及新的null
具有更新的items
。
我在REST调用中尝试了各种操作,例如包括UserId
和UserId
,但这会为ItemId
产生System.InvalidOperationException
。但是,向表中添加items
及其对应的user
很好。
items
其他电话
public HttpStatusCode UpdateUsersAndItems(User user)
{
if (ModelState.IsValid)
{
using (MyContext myContext = _myContext as MyContext)
{
User updateUser = myContext?.Users?.Include(i => i.Items).FirstOrDefault(u => u != null && u.UserName == user.UserName);
if(updateUser != null)
{
updateUser.UserName = user.UserName;
updateUser.Dob = user.Dob;
updateUser.Location = user.Location;
updateUser.Items = user.Items;
myContext?.Users?.Update(updateUser);
int changes = myContext.SaveChanges();
if (changes > 0)
{
return HttpStatusCode.Created;
}
}
}
}
return HttpStatusCode.NotModified;
}
namespace TestWebApplication.Database
{
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string Dob { get; set; }
public string Location { get; set; }
public ICollection<Items> Items { get; set; }
}
}
namespace TestWebApplication.Database
{
public class Items
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ItemId { get; set; }
public string Item { get; set; }
public string Category { get; set; }
public string Type { get; set; }
public int? UserId { get; set; }
[ForeignKey("UserId")]
public virtual User User { get; set; }
}
}
答案 0 :(得分:1)
您必须仔细检查每个项目,然后更改其属性。
类似这样的东西。
Comment
我看不到您如何唯一标识商品,但没有将主键暴露给前端(网络)