我已经把自己写进了一个角落,在哪里放置数据库特定的帮助器方法

本文关键字:置数据 数据库 在哪里 方法 帮助 角落 一个 自己 | 更新日期: 2023-09-27 18:08:13

好吧,我不认为我的控制器应该知道sql。

我想将传入的空值转换为要更改为MinValue的操作

var salesFrom = Model.SalesFrom ?? SqlDateTime.MinValue;

但是,如果我将这一行添加到我的控制器操作中,那么我的控制器将转向SQL特定的实现。所以,我认为它属于我的服务....但是,由于它是一个会因实现而变化的语句,我不想让它成为我的IService的一部分,因为那样我就必须为我创建的任何服务实现它。

最后,我想将其添加到DataContext,但我的控制器不直接访问上下文....

我已经把自己写进了一个角落,在哪里放置数据库特定的帮助器方法

我不太了解EF,但我认为这是一个很好的实践。

我喜欢保持我的模型/控制器完全与数据库无关。

如果我是你,我会怎么做:
  1. 而不是使用SQLDateTime使用只是DateTime,在你的控制器/模型(mvc)。
  2. 如果必须的话,稍后在不同的层(例如您的DAO)中进行转换。(例如,我使用nHibernate,它为我处理,我只使用DateTime)
好运

既然你使用EF Code-First,那么设置你的模型类的SalesFrom属性的默认值为SqlDateTime.MinValue。或者,这也是SQL特定的吗?

您可以尝试为DbContext重写OnModelCreating,并使用Fluent API为生成的列指定DB默认值。