疯了,帮忙看啊这个数据库连接error

xiejiannan2002 2017-03-01 12:17:53
有两个函数,都是连同一个数据库,第一个是用Linq查询,第二个函数是传统stored procedure.
public static CreditCardBizSetupLQEntity GetCreditCardBizSetupByBizID(int bizID)
{
DbHelper dbHelper = new DbHelper(Constants.DEFAULT_CONNECTIONSTRING);
DataContext db = new DataContext(dbHelper.GetConnection());


var list =
(from b in db.GetTable<CreditCardBizSetupLQEntity>()
where b.BizID == bizID
select b).ToList();

if (list.Count != 1)
{
return null;
}

CreditCardBizSetupLQEntity ccBizSetup = list[0];

return ccBizSetup;
}

这第一个函数的数据库连接在每晚2点-6点之间总报一下错误(白天运转正常,只有2点-6点之间报错)
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

然后在第一个函数报错的同时,我会调用第二个函数写log进入数据库(和第一个函数连接的是同一个数据库)
public static int InsertLog(String cardNumber, String request, String step, int success, String msg, String exception)
{
DbHelper db = null;
try
{
db = new DbHelper(Constants.DEFAULT_CONNECTIONSTRING);

db.AddParameter("@CardNumber", cardNumber);
db.AddParameter("@Request", request);
db.AddParameter("@Step", step);
db.AddParameter("@Success", success);
db.AddParameter("@Msg", msg);
db.AddParameter("@Exception", exception);

return db.ExecuteNonQuery("TPC_CreditCard_InsertLog", CommandType.StoredProcedure);
}
catch (Exception ex)
{
msg = SYSTEM_ERROR_WORDING + ex.Message;
return -1;
}
finally
{
// over kill
if (db != null)
{
db.CloseConnection();
}
}
}
奇怪的地方就是,连接的同一个数据库,同一个时间,
都是用db = new DbHelper(Constants.DEFAULT_CONNECTIONSTRING)连接数据库
第一个函数报错,第二个函数却能正常操作

这是为什么?啊啊 啊 啊


...全文
766 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
peng2739956 2017-03-02
  • 打赏
  • 举报
回复
引用 3 楼 q107770540 的回复:
it looks like no issue related to EF, but i have one suggestions for your below codes:
var list =
                (from b in db.GetTable<CreditCardBizSetupLQEntity>()
                 where b.BizID == bizID
                 select b).ToList();

            if (list.Count != 1)
            {
                return null;
            }
why don't you use `SingleOrDefault()`?
这英文 杠杠的 我硬是没看懂
q107770540 2017-03-02
  • 打赏
  • 举报
回复
it looks like no issue related to EF, but i have one suggestions for your below codes:
var list =
                (from b in db.GetTable<CreditCardBizSetupLQEntity>()
                 where b.BizID == bizID
                 select b).ToList();

            if (list.Count != 1)
            {
                return null;
            }
why don't you use `SingleOrDefault()`?
正怒月神 2017-03-01
  • 打赏
  • 举报
回复
把 Constants.DEFAULT_CONNECTIONSTRING 连接字符串的格式看一下。 只要看格式,免得被暴库。哈哈 因为ef和ado.net连接字符串有点区别
xiejiannan2002 2017-03-01
  • 打赏
  • 举报
回复
"server=203.XX.XXX.23; user id=XXX; password=XXX; database=PrepaidCard";

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧