如何强制实体框架使用datetime而不是datetime2进行存储过程调用?

时间:2017-04-28 13:51:29

标签: c# sql-server entity-framework datetime edmx

我的存储过程中有一个datetime输入。

当使用数据库第一种方法构建edmx时,我们有一个

((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("spInsert", ... , payDateParameter);

payDateParameter定义为:

var payDateParameter = payDate.HasValue ?
    new ObjectParameter("PayDate", payDate.Value) :
    new ObjectParameter("PayDate", typeof(System.DateTime));

其中payDateDateTime?

例外:

  

正在使用的SQL Server版本不支持数据类型“datetime2”。

我了解datatime数据类型中存在范围限制。因此,为另一次尝试添加最小值。

var payDateParameter = payDate.HasValue ?
    new ObjectParameter("PayDate", payDate.Value) :
    new ObjectParameter("PayDate", new DateTime(1753,1,1));

仍然是同样的例外。

有没有办法强制存储过程调用将我的payDateParameter用作datatime类型而不是datetime2

1 个答案:

答案 0 :(得分:0)

您需要在文本编辑器中打开edmx并更改以下内容

<Schema Namespace="CPTTModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2005" xmlns:store=....
  

重要的是“ProviderManifestToken”   参数。据微软称,这个参数有助于实体   模型功能虽然没有连接到数据库,我想也是   有助于最好地构建它针对目标生成的查询   数据库。棘手的是每次更新数据   模型,甚至可以在显示编辑器中移动一个对象,这个值   已更新并保存到与其连接的数据库中。