Строка подключения EF 4.1 код первого SQL Compact в приложении Windows Form - PullRequest
3 голосов
/ 15 июля 2011

Я создал приложение Windows Form:

  1. Библиотека презентаций с несколькими формами окон
  2. Библиотека классов со слоем данных
  3. Библиотека классов для доступа к базе данных

Я использую EntityFramework 4.1 с Code First Approach и базой данных SQL Compact 4.0.

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

Я пишу в правильном app.config? Нужно ли инициализировать мой класс DbContext определенным образом? (сегодня я не передаю строку подключения в конструкторе)

Класс DbContext:

public class MyDB : DbContext
{
    public DbSet<ContactPerson> ContactPersons { get; set; }

    public DbSet<Customer> Customers { get; set; }

    public DbSet<Project> Projects { get; set; }

    public DbSet<Quotation> Quotations { get; set; }

    public MyDB()
    : base("MyDatabase")
    {

    }
}

Строка подключения App.config:

<add name="MyDatabase" connectionString="Data Source=MyDB.sdf" 
providerName="System.Data.SqlServerCE.4.0">

Ответы [ 3 ]

6 голосов
/ 15 июля 2011

Вам нужно поместить app.config в проект приложения (.exe).Файл app.config должен выглядеть в этом сообщении в блоге (с учетом регистра): http://erikej.blogspot.com/2011/04/saving-images-to-sql-server-compact.html, а имена должны быть MyDB, а не MyDatabase ...

0 голосов
/ 04 сентября 2012

Вы пробовали посеять БД?Вам нужно ввести некоторые данные, чтобы EF создал БД, если вы не сделаете это, определение модели похоже на заявление о намерениях.

public class ContextInitializer : DropCreateDatabaseIfModelChanges<DBContext>
{
    protected override void Seed(DBContext context)    
    {
        context.Add(new Customers()); //add a Customer, for example
    }
}

Затем загляните в папку «Отладка / Выпуск» и проверьте, если БДсоздан правильно.

Есть статья Microsoft, объясняющая весь этот процесс более подробно, у них есть новый учебник, который заменяет учебник "Волшебный единорог", см. http://msdn.microsoft.com/en-US/data/jj193542

0 голосов
/ 21 сентября 2011

Ваша строка подключения неверна, она должна быть такой:

add name = "MyDB" connectionString = "Источник данных = MyDB.sdf" providerName = "System.Data.SqlServerCE.4.0"

Обратите внимание, что имя должно совпадать с именем вашего класса контекста, чтобы оно автоматически обнаруживало соединение.

...