我有一个C#类贷款,该贷款映射到SQL Server数据库中的Loans表。我正在使用DotNet EF Core 2.1。从我的代码与数据库进行交互。
public class Loan
{
public decimal Rate { get;set; }
// Other properties omitted for brevity
}
当我创建数据库连接时,我将其配置为在无法按以下方式在服务器端执行查询时引发异常:
services.AddDbContext<DbContext>(options =>
options
.UseSqlServer(systemConfiguration.DatabaseConnectionString)
.ConfigureWarnings(warnings => warnings.Throw(RelationalEventId.QueryClientEvaluationWarning)));
问题是使用LINQ查询小数列时:
// Obtain DbContext from services
var loans = await dbContext.Loans.Where(l => l.Rate > 1.5m).ToListAsync();
由于无法在服务器端执行查询而引发异常。其他数字属性类型(例如int)也可以正常工作。
我不确定这是否对您有帮助,但是如果您首先使用EF代码,则可以在配置类中指定小数位数和精度。例如:
modelBuilder.Property(x => x.PurchaseCost).HasColumnType("decimal(12,6)");
该类的My PurchaseCost属性定义为小数类型。