[英]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));
payDate
是DateTime?
。
例外:
正在使用的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.