2013-07-10 2 views
0

Полный код можно найти здесь: http://home.htw-berlin.de/~s0531210/eb/DataBaseTest.zipEntity Framework доступа оленьей кожи через DLL к базе данных

Это простой проект с тестированием Entity Framework. У меня есть DLL, которая позволяет получить доступ к базе данных SQL Server Compact. Этот доступ происходит с помощью Enttiy Framework 5.0.

Второй проект - консольное приложение, которое обращается к этой DLL. При вызове класса из DLL для хранения выборочных данных в базе данных исключение является «Ошибка основного поставщика Open».

Это исключение возникает при вызове: 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(); 
     } 
    } 
} 

Надеюсь, вы, ребята, можете мне помочь. Я не знаю, где проблема. Я искал в Интернете, и я нашел что-то о persmission iusses, но connectionstring reqiredpermissin = false.

+1

И работает ли метод getFrom? (Btw: очень неэффективный способ фильтрации). –

+0

Проблема будет с ConnectionString и как/где фактические файлы db. Отправьте ConnectionString для запуска. –

+0

Да, я бы посмотрел строку подключения в app.config для вашего проекта консольного приложения. Я загрузил ваш проект и указал его на место, где файл sfd находится в вашем проекте библиотеки базы данных, и, похоже, он отлично работает для меня. Проверьте это местоположение в консольном приложении и убедитесь, что SDF на самом деле там. – Bearcat9425

ответ

0

спасибо за подсказку с работающей соединительной строкой. В базе данных не было файла App.config из консоли, на который указали. но я не понимаю, почему строка соединения в dll, в которой также есть файл App.config, игнорируется. Если я хочу, чтобы строка подключения была доступна только в DLL, нужно ли вручную установить строку подключения в DLL с помощью команды?

+0

Нет - любая конфигурация должна быть в файле конфигурации исполняемого приложения. Файлы конфигурации, созданные для библиотеки классов и других приложений, действительно помогут вам узнать, какие конфигурации необходимы этой библиотеке. Вы по-прежнему несете ответственность за то, чтобы конфиг для исполняющей сборки имел любую требуемую конфигурацию. –

+0

Вот что я нашел: App.Config для вашей DLL: [link] (http://www.codeproject.com/Articles/12228/App-Config-for-your-DLL) Я думаю, что это очень интересно, но некоторая работа должна быть выполнена раньше. – user2570018

Смежные вопросы