2014-10-07 66 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