gpt4 book ai didi

c# - List.Add() 在 C# 中不起作用 - getter 和 setter 问题?

转载 作者:行者123 更新时间:2023-12-01 20:03:30 25 4
gpt4 key购买 nike

我有这个属性:

public virtual List<FieldImage> Images { get; set; }

如果我使用像这样的实体从我的数据库中获取具有此属性的类...

Field field = this.unitOfWork.FieldRepository.GetByID(Convert.ToInt32(fieldID));

然后将图像添加到数组中:

FieldImage fieldImage = new FieldImage()
{
CreatedAt = dateNow,
UpdatedAt = dateNow,
CreatedBy = unitOfWork.UserRepository.GetByID(User.Identity.GetUserId()),
File = file,
Field = field
};

field.Images.Add(fieldImage);

然后像这样保存上下文:

this.context.SaveChanges();

一切都好。图像数组被填满,并且保存到数据库效果很好。

如果我将属性更改为:

private List<FieldImage> _images;
public virtual List<FieldImage> Images
{
get
{
return
this._images != null ?
this._images.Where(x => x.DeletedAt == null).ToList() :
new List<FieldImage>();
}
set
{
this._images = value;
}
}

现在做我之前做的事情,字段。图像保持为空,但没有错误......当然,数据库保存不会发生。

我做错了什么?

编辑:

这有效,谢谢...看起来我的 if 逻辑有问题:

    private List<FieldImage> _images;
public virtual List<FieldImage> Images
{
get
{
if (this._images == null)
{
this._images = new List<FieldImage>();
}

return this._images;
}
set
{
this._images = value.Where( x => x.DeletedAt == null ).ToList();
}
}

最佳答案

为什么你要对你的模型进行这种操作?您可以添加另一个标记为“NotMapped”的列来执行相同的操作,请阅读以下代码:

[NotMapped]
public IEnumerable<FieldImage> NotDeletedImages
{
get
{
return this.Images.Where(x => !x.Deleted);
}
}

我想您应用此过滤器是因为您想“显示”不同的数据。在这种情况下,为什么不使用 View 模型?

关于c# - List.Add() 在 C# 中不起作用 - getter 和 setter 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29371148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com