假设 SQL 表包含
char(10)
列,并且一条记录在该列中包含值“ABC”。当询问值时,实体框架将传递 ABC
(“ABC”,带有 7 个尾随空格)。
有没有办法让实体框架在获取
char
类型的列的值时忽略尾随空格,本质上让 EF 将其视为 varchar
?
快速浏览一下 Fluent API 中可用的方法,没有得出明显的解决方案。删除
entity.Property(e => e.CharColumn).IsFixedLength()
不会产生修剪尾随空格的预期效果。
在我的用例中,不能选择将 SQL 数据库中的列类型从 char
更改为 varchar
,因为它可能会干扰我无法控制的读取此表的其他程序。
您可以自己创建一个并修剪值,而不是在实体类中使用自动属性。
private string _myProp;
public string MyProp
{
get => _myProp?.TrimEnd();
set => _myProp = value;
}
在设置器中进行操作时要小心。我不确定实体框架,但 EF Core 如果找到支持字段,则会直接将值分配给支持字段,从而绕过设置器。