【发布时间】:2019-04-11 11:47:05
【问题描述】:
我的情况是我正在使用一个遗留数据库,该数据库具有大多数代码共有的两个特征 - 有许多以固定长度保存的值用前导零填充,还有固定长度和尾随空格在末尾。处理起来很烦人,所以我试图弄清楚格式化这些值的最干净的方法是什么。
我现在主要关注的是格式化视图模型/dto。我只是通过查询或存储过程使用 Dapper 查询数据库,它们映射到我的 DTO 类,通过我的 webapi 作为 Json 提供。
现在这就是我的许多模型属性最终的样子:
public string PurchaseOrderNumber
{
get => _purchaseOrderNumber.TrimStart('0');
set => _purchaseOrderNumber = value;
}
这只是到处重复。能够做这样的事情会很好:
[TrimZeros]
public string SupplierName { get; set; }
我也可以创建一个仅在 SQL 中执行此操作的函数,然后将其作为我所有 sql 查询/存储过程的责任。这在我使用像 Dapper 这样轻量级的东西时有效,但在我使用 Entity Framework 时则不然。
关于如何解决这个问题的任何建议?
【问题讨论】:
-
为了获得 5% 的收益,您可以为
string编写一个TrimZeros()扩展方法。打字会更容易。 -
您还可以查看:code.google.com/archive/p/easyprop 和这个(它使用 setter,而不是 getter,但是...):stackoverflow.com/questions/4546935/…
-
另外,在
set方法中调用TrimStart可能会更有效一些(我假设采购订单号不会被多次设置,或者如果确实如此,它的设置频率低于读取频率)。 -
@Flydog57 - 正如您现在所说,我实际上已将此设置为扩展方法,只是为了清楚起见决定将其排除在外,因为这是我试图摆脱的。仍然是我找到的最佳选择!
标签: c# properties custom-attributes