小编Edu*_*dub的帖子

EF Core 强制刷新数据库中的实体(强制从数据库获取值)

我想了解如何使用 Entity Framework Core 加载/获取实体的当前数据库值(“从数据库强制重新加载”)。我的属性如下所示:

[Column(TypeName = "decimal(16, 2)")]
public decimal Fee { get; set; }
Run Code Online (Sandbox Code Playgroud)

如果费用以比列属性中指定的精度更高的精度保存,例如1,2888数据库将其四舍五入到两位小数,但我保存的实体不会得到更新。

因此,我尝试从数据库重新加载值以在此 UI 中显示“正确的当前”值,但以下两种方法均无效:

// removed from tracked entities and fetch from db
dbContext.Entry(entity).State = EntityState.Detached;
dbContext.Find(...);

// call reload
dbContext.Entry(entity).Reload();
Run Code Online (Sandbox Code Playgroud)

预期该值1,29在刷新/重新加载之后,但始终保持为1,2888。我已经在数据库中查找了该值,并且1,29下一个请求也会返回,1,29但我没有设法在同一个请求中返回正确的值。

有没有办法“强制刷新”数据库中的实体?

- - 编辑 - -

问题是我有一个带有导航属性的实体,小数点在导航属性上,在实体本身上调用 .Reload() 时没有重新加载。

代码

using System;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;

namespace WebApplication1
{
    public class Entity
    {
        public long Id { get; …
Run Code Online (Sandbox Code Playgroud)

sql-server precision decimal entity-framework-core .net-core

6
推荐指数
1
解决办法
3976
查看次数