[英]Servicestack ORMLite update child collection
我可以看到您可以在ORMLite中执行以下操作:
var customer = new Customer {
Name = "Customer 1",
PrimaryAddress = new CustomerAddress {
AddressLine1 = "1 Australia Street",
Country = "Australia"
},
Orders = new[] {
new Order { LineItem = "Line 1", Qty = 1, Cost = 1.99m },
new Order { LineItem = "Line 2", Qty = 2, Cost = 2.99m },
}.ToList(),
};
db.Save(customer, references:true);
但是如何更新子集合呢?
怎么做?
对此进行扩展。
我在UserAccount内部有一个UserAccount类和一个Image类:
public class UserAccount
{
[AutoIncrement]
public int Id {
get ;
set;
}
public UserAccount()
{
Images = new List<UserImage>();
}
public List<UserImage> Images { get; protected set; }
public UserImage Image { get; set; }
public class UserImage
{
public UserImage()
{
Created = DateTime.Now;
}
public UserImage(string name)
{
Value = name;
Created = DateTime.Now;
}
public string Value { get; set; }
}
}
这样做:
var fullImage = new UserAccount.UserImage(newImageUrl);
fullImage.IsDefault = true;
user.Image = fullImage;
db.Update (fullImage);
不起作用
这样做:
var fullImage = new UserAccount.UserImage(newImageUrl);
fullImage.IsDefault = true;
user.Images.Add(fullImage);
db.Update (fullImage);
不行...
也做同样的事情,但是将图像作为具有其自身ID的单独实体并在父类上设置引用不起作用吗?
我认为这是这样的:
var image = new UserImage(newImageUrl);
image.IsDefault = true;
db.Save (image);
var images = user.Images;
images.Add (image);
db.Update (new UserAccount{Id = user.Id, Image = image, Images = images});
我希望我错了,因为那太丑了:/
[UPDATE]
我现在看起来像这样,这要好得多:
db.UpdateOnly (user,
onlyFields: a=> new { a.Image, a.Images},
where: ua => ua.Id == user.Id);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.