0

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

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

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

但是,如果我将此行添加到我的控制器操作中,那么我的控制器将转换为特定于 SQL 的实现。所以,我认为它属于我的服务......但是,由于它是一个因实现而异的声明,我不想让它成为我的一部分,IService因为我必须为我创建的任何服务实现它。

最后,我想把它添加到DataContext中,但是我的控制器并没有直接访问Context....

4

3 回答 3

1

我对 EF 了解不多,但我认为这是一个很好的做法。

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

如果我是你,我会怎么做:

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

祝你好运

于 2013-04-09T19:05:15.663 回答
0

由于您使用的是 EF Code-First,因此将SalesFrom模型类的属性的默认值设置为SqlDateTime.MinValue. 或者,这也是特定于 SQL 的吗?

于 2013-04-09T18:54:14.637 回答
0

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

于 2013-04-09T19:04:59.577 回答