【发布时间】:2013-10-12 04:02:16
【问题描述】:
为了在 SQL Server 和 C# 之间进行交互,我使用了SqlCommand 对象、参数和存储过程。
我的问题是我不知道,直到我执行它,如果它仍然与数据库同步。
例如,如果我有以下存储过程:
create procedure psSync
(
@Argument VARCHAR(50)
)
--do stuff
我将在我的代码中:
String myArgument="20131110"
SqlCommand sqlcmd = new SqlCommand { CommandType = CommandType.StoredProcedure, CommandText = "psSync"};
sqlCommand.Parameters.AddWithValue("@Argument", myArgument);
//execute sql command
这里的一切都很好。
但如果我将我的 proc 更改为
create procedure psSync
(
--Desync!
@Argument Datetime
)
--do stuff
忘记将 myArgument 更改为 datetime,它会崩溃,而且我经常会太晚才注意到这个错误。
我首先尝试运行单元测试,使用开始事务和回滚在我的开发数据库中执行存储过程,但我不喜欢它:
- 需要很长时间
- 它可能在 prod 中误运行
- 它将数据库配置存储在测试 dll 中
所以我的问题是:
如何快速、高效、安全地测试 C# 代码和 SqlServer 代码(SqlCommand->Stored Procedure)之间的所有 sql 链接?
【问题讨论】:
-
这是 ORM 被发明的原因之一。 NHibernate 或 Entity-Framework 或其他。
标签: c# sql-server testing stored-procedures