即使指定了精度,实体框架验证警告:XAF 日志

Posted

技术标签:

【中文标题】即使指定了精度,实体框架验证警告:XAF 日志【英文标题】:Entity Framework validation warning even though precision is specified: XAF Log 【发布时间】:2022-01-21 17:30:32 【问题描述】:

我的业务对象中有以下内容

using System.ComponentModel.DataAnnotations;

   [ModelDefault("DisplayFormat", "0:g")]
   [ModelDefault("EditMask", "g")]
   [DataType("decimal(18,5)")]
   public decimal Score  get; set; 

应用程序按预期运行,但在 eXpressAppFramework.log 中我看到了

Microsoft.EntityFrameworkCore.Model.Validation:警告:没有类型 为实体类型上的小数属性“分数”指定 '评分条目'。这将导致值被静默截断,如果它们 不适合默认的精度和比例。明确指定 可以容纳所有值的 SQL Server 列类型 'OnModelCreating' 使用 'HasColumnType()',指定精度和比例 使用“HasPrecision()”或使用配置值转换器 'HasConversion()'。

【问题讨论】:

【参考方案1】:

EF 只是不读取 DataTypeAttribute 作为其配置的一部分。使用 ColumnAttribute,例如

 [Column(TypeName = "decimal(18,5)")]

配置Column Data Types。之所以会产生混淆,是因为 System.ComponentModel.DataAnnotations 不仅仅用于 EF 实体注释。

【讨论】:

以上是关于即使指定了精度,实体框架验证警告:XAF 日志的主要内容,如果未能解决你的问题,请参考以下文章

即使验证失败,Core Data 也会保存对象

XAF问题多个属性验证RuleUniqueValue

即使指定了 JWT 身份验证,也没有指定身份验证方案错误

XAF实现运行时填加验证规则并保存到数据库中

GetAsync 使用基本身份验证,即使我指定了 Bearer

Entity Framework实体框架使用TrackerEnabledDbContext进行操作日志跟踪