实体框架是否在不从代码中专门调用save()的情况下保存数据对象

本文关键字:save 情况下 对象 数据 保存 调用 是否 框架 代码 实体 | 更新日期: 2023-09-27 18:24:35

最近我们在实体框架保存数据对象方面遇到了问题,尽管我们没有要求它这样做

public virtual ActionResult Index()
{
    var productListViewModel = new ProductListViewModel
                                {
                                    Products = ProductService.GetAllProducts()
                                };
    // temporarily override file url to display images
    foreach (var product in productListViewModel.Products)
    {
        product.ImageFileName = FileUploadService.GetProductThumbnailUrl(product);
    }
    return View(productListViewModel);
}

GetProductThumbnailUrl()函数返回一个由静态URL+ImageFileName组成的格式化路径字符串。然而,出于明显的原因,我们不想保存此路径,只是暂时将其用于视图。

但奇怪的是:有时所有这些产品都会保存到数据库中,这会给我们提供无法使用的格式错误的URL。

所以我现在的问题是,是什么导致了这种情况?(我使用unity进行dep.注入)


至于修复,我只是不更改数据对象中的任何内容,而是使用渲染操作:

public ActionResult GetProductUrl(DomainModel.Product p)
{
    return Content(FileUploadService.GetProductThumbnailUrl(p));
}

在视图中:

@Html.Action(MVC.Admin.Product.GetProductUrl(p))

实体框架是否在不从代码中专门调用save()的情况下保存数据对象

在那里的某个地方,您正在根据从中提取的上下文调用提交更改。这是唯一能挽回局面的方法。