【问题标题】:Servicestack ORMLite update child collectionServicestack ORMLite 更新子集合
【发布时间】:2014-10-07 10:43:54
【问题描述】:

我可以看到你可以在 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,并且在父类上设置引用不起作用?

【问题讨论】:

    标签: servicestack ormlite-servicestack


    【解决方案1】:

    我认为是这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 2022-01-18
      • 2021-11-03
      • 1970-01-01
      相关资源
      最近更新 更多