Mik*_*ike 2 c# formatting orm dto
自从我开始使用ORM进行日常数据访问以来.我已经开始思考我应该依赖格式化函数对我的列有多少了.通过格式化功能,我的意思是这样的事情甲骨文的decode(), instr()和initcap().
例
假设我在Oracle中使用格式选择此列.
(to_number(to_char(to_date('1', 'J') + (EndTime - StartTime), 'J') - 1) * 24)
+ (to_char(to_date('00', 'HH24') + (EndTime - EndTime), 'HH24'))
|| ':' ||
to_char(to_date('00', 'MI') + (EndTime - StartTime), 'MI')
as duration_time
Run Code Online (Sandbox Code Playgroud)
我知道,它不是很漂亮.因为使用ORM(我使用NHibernate)格式化这样的东西可能是浪费时间.我以为我可以简单地让DTO来处理这种格式化.我可以在我的C#set属性中使用这样的东西.
public TimeSpan DurationTimeSpan
{
get
{
return EndTime.Subtract(StartTime);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,我应该让我DTO对象来处理这样的格式吗?或者是DTO对象不应该对此类事负责?就个人而言,让DTO的set属性进行这样的格式化看起来可能更清晰.从它的外观来看,大多数格式化都可以通过非常简单的C#来实现.
这绝对听起来应该远离数据库.数据库的目的是为您的应用程序存储和提供数据.格式化是特定于客户端的 - 并且不应该是查询的一部分,IMO.
除了其他任何东西,我怀疑你会发现在.NET中编码/测试/调试格式比在SQL中更容易:)
现在,这并不意味着必须将逻辑放在您的DTO中.如果您有两个不同的客户端视图需要以不同的方式呈现相同的数据,该怎么办?如果你的DTO真的只是为了传输数据,他们不应该担心它是如何呈现给用户的.这应该在你的UI逻辑中.通过各种方式使DTO从数据库表示(例如"秒数")转换为更惯用的.NET类型(TimeSpan)但我将格式保留到UI层.
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |