Entity Framework Code First Pattern с SDF-файлом. Это действительно надежный файл? - PullRequest
0 голосов
/ 02 января 2012

Я работаю со структурой сущностей с шаблоном проектирования кулака кода.
Прежде всего я создал две таблицы классов ...

using System.Data.Entity;
public class CyclingClubContext:DbContext
{   
public DbSet<CycleType> CycleType { get; set; }
public DbSet<CycleModel> CycleModel { get; set; }
}

Когда я запускаю свой проект,
Он создает две таблицы вбаза данных, которая автоматически генерируется как файл CyclingClub.sdf.
Затем мне нужно добавить еще один класс сущностей.
Итак, после того, как я создал новый класс сущностей, я изменяю класс Context следующим образом ...

using System.Data.Entity;
public class CyclingClubContext:DbContext
{   
public DbSet<CycleType> CycleType { get; set; }
public DbSet<CycleModel> CycleModel { get; set; }
public DbSet<SideMenu> SideMenu { get; set; }
}

Затем я строю свой проект, но он по-прежнему показывает сообщение об успешном построении.
Но когдаЯ запускаю свой проект, проблема запускается, показывая сообщение, что

[InalidOperationException was unhandled by user code.]

The model backing the 'CyclingClubContext' context has changed since the database was  created. Either manually delete/update the database, or call Database.SetInitializer with an IDatabaseInitializer instance. For example, the DropCreateDatabaseIfModelChanges strategy will automatically delete and recreate the database, and optionally seed it with new data.

Так что теперь у меня есть несколько вопросов.

1) Как я могу решить эту ошибку?

2) Всякий раз, когда нам нужно добавить новый класс сущностей, нужно ли сначала удалить существующую базу данных
и воссоздать базу данных, поскольку сообщение об ошибке уже подсказывает мне?

3) Если мысначала нужно удалить и заново создать новую базу данных, затем я боюсь, что мои
существующие записи потеряют после повторного создания новой базы данных.Что будет лучшим решением?

4) Является ли файл SDF действительно надежным, когда мы хотим перейти на корпоративный уровень?Если да, дайте мне знать причину, почему?

5) MDF-файл и SDF-файл, который лучше подходит для уровня предприятия, который должен иметь дело с
большим объемом данных и доступом нескольких пользователей наодин раз?

6) Можно ли использовать файл MDF в первом шаблоне разработки кода структуры сущностей?
Если это так, дайте мне знать справочные ссылки, показывающие, как?

Будем очень благодарны за каждое предложение.

1 Ответ

2 голосов
/ 02 января 2012
  1. Ошибка точно говорит, как вы должны ее решить.В начале вашего приложения вы можете установить инициализатор базы данных и контролировать, если он будет автоматически воссоздан и когда.
  2. При текущей реализации EF code-first может создать только целую базу данных со всеми таблицами, так что действительно, если вы добавите новуюобъекты или изменить существующие объекты EF может использовать их, только если он удаляет старую базу данных и создает ее заново.Это изменится в EF 4.3, который должен содержать EF Migrations .EF Migrations предложит пошаговое построение базы данных.
  3. Да.С доступными в настоящее время инициализаторами ваши данные будут потеряны.Инициализаторы в настоящее время больше для разработки.Вы можете получить пользовательский инициализатор и переопределить метод Seed, чтобы заполнить вновь созданную базу данных некоторыми исходными данными.
  4. Файл SDF предназначен для выпуска SQL Server Compact.Это для очень маленьких баз данных.Например, для локального хранения приложения WPF / WinForm или в качестве простой базы данных конфигурации для веб-приложения.Это не для больших наборов данных интенсивного использования.
  5. Файл MDF для SQL Server.Если вы собираетесь создавать корпоративное приложение, работающее с большими наборами данных, вам следует перейти на полную (коммерческую) версию SQL-сервера.SQL Express имеет ограничения по использованию ЦП, а размер базы данных для 2008 R2 ограничен 10 ГБ (более ранние версии имеют гораздо худшие ограничения).
  6. Да, это возможно.Вам просто нужно правильно определить строку подключения для большого сервера SQL, и у вас должны быть разрешения на создание баз данных на этом сервере.

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

Просто следуйте этому набору статей , чтобы узнать код в первую очередь.Он нацелен на предварительную версию, но почти весь контент должен быть действительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...