繁体   English   中英

Servicestack ORMLite更新子集合

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM