2013-07-10 50 views
0

完整的代碼可以在這裏找到:http://home.htw-berlin.de/~s0531210/eb/DataBaseTest.zip通過DLL實體框架犯規訪問數據庫

這是一個簡單的項目與測試實體框架。 我有一個允許訪問SQL Server Compact數據庫的DLL。這種訪問發生在Enttiy Framework 5.0中。

第二個項目是訪問此DLL的控制檯應用程序。從DLL調用類將樣本數據存儲到數據庫時,該例外是「錯誤底層提供程序打開」。

調用db.SaveChanges();時發生此異常。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 



namespace DatabaseLibrary 
{ 
    public class SLD 
    { 
     public SLD() 
     { 
     } 

     public void enterData() 
     { 
      using (var db = new SLDDatabaseModelEntitiesContext()) 
      { 
       for (int i = 0; i < 10; i++) 
       { 
        SLDEntity entrysfoo = new SLDEntity(); 
        entrysfoo.Flip = i; 
        entrysfoo.Slidename = "bla" + i; 
        db.SLDEntity.Add(entrysfoo); 
       } 
       db.SaveChanges(); //DAtanbank speichern 
      } 
     } 

     public SLDEntity getFromDataBase(string wsiname) 
     { 
      using (var db = new SLDDatabaseModelEntitiesContext()) 
      { 
       foreach (var item in db.SLDEntity) 
       { 
        if (item.Slidename.Equals(wsiname)) 
        { 
         return item; 
        } 
       } 
      } 

      return new SLDEntity(); 
     } 
    } 
} 

我希望你們能幫助我。我不知道問題出在哪裏。我搜索了互聯網,發現了一些關於持久性錯誤的東西,但連接字符串reqiredpermissin = false。

+1

並且getFrom方法是否正常工作? (順便說一句:非常低效的過濾方式)。 –

+0

問題將出現在ConnectionString以及實際數據庫文件的方式/位置。發佈ConnectionString以啓動。 –

+0

是的,我會看看你的控制檯應用程序項目的app.config中的連接字符串。我下載了你的項目,並將其指向sfd文件在數據庫庫項目中的位置,它似乎對我來說工作正常。在您的控制檯應用程序中檢查該位置,並確認SDF實際存在。 – Bearcat9425

回答

0

感謝與連接字符串工作的提示。數據庫不在那裏,consoleapp的App.config文件指向。但我不明白爲什麼在DLL中的連接字符串,其中一個也有一個App.config文件被忽略。如果我想,連接字符串僅在DLL中可用,是否必須通過命令手動設置DLL中的連接字符串?

+0

否 - 任何配置都必須位於正在執行的應用程序的配置文件中。爲類庫和其他應用程序創建的配置文件實際上只是爲了幫助您瞭解該庫所需的配置。確保執行程序集的配置具有任何所需的配置仍然是您的責任。 –

+0

這裏是我發現的東西:App.Config爲您的DLL:[鏈接](http://www.codeproject.com/Articles/12228/App-Config-for-your-DLL) 我認爲這是非常有趣的,但之前需要完成一些工作。 – user2570018