Fehlermeldung:
The underlying provider failed on Open.EntityFramework EntityFramework |
At System.Data.Entity.Core.EntitiyClient.EntityConnection.Open()
Problem
Bei Aufruf über Linq an EF EntityFramework
var data = db.tbl_Scans.FirstOrDefault(s => s.URLRef == sURL); |
Problematisacher Code
var db = new dbAppData_Context();
var data = db.tbl_Scans.FirstOrDefault(s => s.URLRef == sURL); if (data == null) { //--< Add() >-- data = new tbl_Scans(); data.Title = sTitle; data.URLRef = sURL; data.dtCreated = DateTime.Now; data.dtListed = DateTime.Now; db.tbl_Scans.Add(data); clsSys.fx_Log("added: " + data.Title); //--</ Add() >-- } else
|
Lösung:
Optimierter Code
Nach dem Aufruf der Datenbank Context Verbindung, sollte man die db.connection zusätzlich prüfen
//< check > if (db.Database.Connection.State != System.Data.ConnectionState.Open) db.Database.Connection.Open(); if (sURL == null) return; //</ check >
|
C# code
public static void Add_or_Update_Record_from_List(string sURL, string sTitle) { //----------< db_Update_Add_ListRecord()>------------ var db = new dbAppData_Context();
//< check > if (db.Database.Connection.State != System.Data.ConnectionState.Open) db.Database.Connection.Open(); if (sURL == null) return; //</ check >
try { var data = db.tbl_Scans.FirstOrDefault(s => s.URLRef == sURL); if (data == null) { //--< Add() >-- data = new tbl_Scans(); data.Title = sTitle; data.URLRef = sURL; data.dtCreated = DateTime.Now; data.dtListed = DateTime.Now; db.tbl_Scans.Add(data); clsSys.fx_Log("added: " + data.Title); //--</ Add() >-- } else { //--< Update() >-- data.dtListed = DateTime.Now; clsSys.fx_Log("updated: " + data.IDScan); //--</ Update() >-- } db.SaveChanges(); } catch (Exception ex) { clsSys.fx_Error_Log("clsdb error: " + ex.Message + Environment.NewLine + "url=" + sURL); }
//----------</ db_Update_Add_ListRecord()>------------ }
|