c# - 使用 Entity Framework 存储过程的日期参数

标签 c# sql entity-framework datetime

我正在 SQL 服务器数据库上调用一个存储过程,它接受日期参数,其中 d1d2 是 c# DateTime 类型。我正在使用 Entity Framework 来这样做:

context.Database.ExecuteSqlCommand("myprocedure @p1 @p2",dt1.Date,dt2.Date)

它没有返回结果,所以我尝试了:

var p0 = new SqlParameter("p0",dt1);
p0.SqlDbType = SqlDbType.Date;
var p1= new SqlParameter("p1", dt2);
p1.SqlDbType = SqlDbType.Date;
context.Database.ExecuteSqlCommand("myprocedure @p1 @p2",p0,p1)

然而,如果我只是这样做:

context.Database.ExecuteSqlCommand("myprocedure @p1, @p2", '1/20/2014', '1/30/2014')

我得到了正确的结果。请帮助..在这里让我失去理智。

最佳答案

您的日期还包括时间。要做到这一点:

context.Database.ExecuteSqlCommand("myprocedure @p1, @p2", '1/20/2014', '1/30/2014')

你需要这样做:

context.Database.ExecuteSqlCommand("myprocedure @p1 @p2",dt1.Date.ToShortDateString() , dt2.Date.ToShortDateString())

这是因为我假设您的 SP 采用字符串而不是 DateTime 类型。

请注意,日期字符串的格式取决于文化。您可能希望使用 .ToString() 方法手动指定 MM/dd/YYYY 格式等,以确保 SP 获得正确格式的日期。


此外,您似乎没有正确使用 Entity Framework 。 Entity Framework 对象上应该有一个名为MyProcedure的方法,您可以直接调用并传递参数。

关于c# - 使用 Entity Framework 存储过程的日期参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21887843/

相关文章:

SQLCMD、.SQL 文件和 SSIS

sql-server - 使用内存中的 SQLite 测试基于 EF SQL Server 的应用程序?

entity-framework - 如何在不加载所有数据的情况下删除 Entity Framework 中的多对多关系

c# - 在哪里使用 EF6 订阅 ObjectMaterialized?

c# - 线程同步c#

c# - Zedgraph 上的格式化工具提示

c# - 本地化 MVVM 中的对话框 : is it good to reference the resources from the ViewModel?

sql - 将查询结果返回到数组中

c# - 使用 DataGridViewCheckboxCell 真正禁用 DataGridView 中的复选框

java - 如何将数据库连接合并到 AspectJ 中?