Dapperを初めて使用しています。かなり便利な小さなツールのように見えます。しかし、私は1つの問題に遭遇しています。下の小さなコンソールアプリケーションでは、最初のメソッドが期待どおりに実行されます。しかし、2番目の方法ではこのエラーが返されます。Dapper:ConnectionStringプロパティが初期化されていません
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll Additional information: The ConnectionString property has not been initialized.
私は方法の順序を変えて同じ結果を得ることができます。それは私がエラーを得ることは常に2番目の呼び出しである。私が間違っていることを確信していない。私もdb.Close()を使用しないようにしましたが、同じ結果が得られました。
db.Open();
任意のアイデア:
エラーが何らかの方法でこのライン上では、第二と呼ばれていますか?ありがとう!
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;
}
}
EDIT AFTER:回答に基づいて
、これは私がそれを解決する方法である:
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;
}
}
は、それはそれは、各使用後に廃棄されることを意味しますので、あなたがそれを使用した後、接続が破棄されると... – Gusman