繁体   English   中英

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

[英]How to force entity framework to use datetime instead of datetime2 for stored procedure call?

我的存储过程中有一个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

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

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

重要的是“ProviderManifestToken”参数。 根据Microsoft的说法,这个参数在没有连接到数据库的情况下帮助实体模型功能,我认为它还有助于最好地构建它针对目标数据库生成的查询。 棘手的是,每次更新数据模型时,即使在显示编辑器中移动对象,该值也会更新并保存到与其连接的数据库中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM