2014-10-07 80 views
1

我可以看到你可以在ORMLite做的东西是这样的:Servicestack ORMLite UPADTE子集合

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:

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一个单独的实体,在父类中设置参考不工作?

回答

0

我认为这是这样的:我希望我是错的,因为这是如此的丑陋

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}); 

:/

[更新]

我把它看现在这个样子是更好:

db.UpdateOnly (user, 
    onlyFields: a=> new { a.Image, a.Images}, 
    where: ua => ua.Id == user.Id); 
+0

虽然 - 这样做,似乎序列化为JSON到col ... – iwayneo 2014-10-07 14:33:13