Cas*_*ton 5 .net c# sql dapper
我是第一次与Dapper玩耍。看起来像一个非常方便的小工具。但是我遇到了一个问题。在下面的小型控制台应用程序中,第一种方法按预期运行。但是第二种方法返回此错误:
System.Data.dll中发生了类型为'System.InvalidOperationException'的未处理异常。其他信息:ConnectionString属性尚未初始化。
我可以改变方法的顺序并获得相同的结果。总是在第二次电话上出现错误。不知道我在做什么错。我也尝试不使用db.Close(),但是得到了相同的结果。
无论使用哪种方法调用第二种方法,错误都在这一行:
db.Open();
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢!
class Program
{
static IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["DapperConnection"].ToString());
static void Main(string[] args)
{
IEnumerable<Policy> policy1 = PolicySelectAll();
IEnumerable<Policy> policy2 = PolicyFindByLastFour("093D");
}
public static IEnumerable<Policy> PolicySelectAll()
{
var sql = "SELECT * FROM Policy";
IEnumerable<Policy> policy;
using (db)
{
db.Open();
policy = db.Query<Policy>(sql);
db.Close();
}
return policy;
}
public static IEnumerable<Policy> PolicyFindByLastFour(string LastFour)
{
var sql = string.Format("SELECT * FROM Policy WHERE PolicyNumber LIKE '%{0}'", LastFour);
IEnumerable<Policy> policy;
using (db)
{
db.Open();
policy = db.Query<Policy>(sql);
db.Close();
}
return policy;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑后:
根据答案,这是我解决的方法:
class Program
{
static string connectionString = ConfigurationManager.ConnectionStrings["DapperConnection"].ToString();
static void Main(string[] args)
{
IEnumerable<Policy> policy1 = PolicySelectAll();
IEnumerable<Policy> policy2 = PolicyFindByLastFour("093D");
}
public static IDbConnection GetConnection()
{
return new SqlConnection(connectionString);
}
public static IEnumerable<Policy> PolicySelectAll()
{
IDbConnection db = GetConnection();
var sql = "SELECT * FROM Policy";
IEnumerable<Policy> policy;
using (db)
{
db.Open();
policy = db.Query<Policy>(sql);
db.Close();
}
return policy;
}
public static IEnumerable<Policy> PolicyFindByLastFour(string LastFour)
{
IDbConnection db = GetConnection();
var sql = string.Format("SELECT * FROM Policy WHERE PolicyNumber LIKE '%{0}'", LastFour);
IEnumerable<Policy> policy;
using (db)
{
db.Open();
policy = db.Query<Policy>(sql);
db.Close();
}
return policy;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您将 db 的定义移至方法范围内,那就没问题了。IE
class Program
{
static void Main(string[] args)
{
IEnumerable<Policy> policy1 = PolicySelectAll();
IEnumerable<Policy> policy2 = PolicyFindByLastFour("093D");
}
public static IEnumerable<Policy> PolicySelectAll()
{
var sql = "SELECT * FROM Policy";
IEnumerable<Policy> policy;
using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["DapperConnection"].ToString()))
{
db.Open();
policy = db.Query<Policy>(sql);
db.Close();
}
return policy;
}
public static IEnumerable<Policy> PolicyFindByLastFour(string LastFour)
{
var sql = string.Format("SELECT * FROM Policy WHERE PolicyNumber LIKE '%{0}'", LastFour);
IEnumerable<Policy> policy;
using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["DapperConnection"].ToString()))
{
db.Open();
policy = db.Query<Policy>(sql);
db.Close();
}
return policy;
}
}
Run Code Online (Sandbox Code Playgroud)
}
| 归档时间: |
|
| 查看次数: |
2457 次 |
| 最近记录: |