#c# #entity-framework #wcf #startup
#c# #entity-framework #wcf #запуск
Вопрос:
Дорогие в моем решении у меня есть проекты, состоящие из нескольких библиотек классов и двух проектов (WcfUI и MvcUI). Я трачу 99% времени на MvcUI. однако WcfUI использует ту же базу данных и службы для серверной части. Используя общий шаблон репозитория и entity Framework, я могу использовать один и тот же DbContext, написанный один раз как для WCF, так и для MVC. Проблема возникает, когда я создаю новый DbSet и добавляю миграцию. Mvc публикуется после нескольких изменений, но не в Wcf, потому что последние обновления не затрагивали его логику.
Должен ли я всегда публиковать как Mvc, так и Wcf, чтобы избежать ошибки «Модель базы данных / контекст был изменен …»
Или для Wcf рекомендуется вводить в App_Start новый класс, как показано ниже:
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(WcfUI.App_Start.DbInitialization), "Start")]
namespace WcfUI.App_Start
{
using DAL.Database.DbContexts;
using System.Data.Entity;
/// <summary>
/// To Avoid EF error: model was changed since bla bla...
/// </summary>
public static class DbInitialization
{
public static void Start() => Database.SetInitializer<MvcDbContext>(null);
}
}
На данный момент я использую этот класс, и проблема кажется решенной, но я не совсем уверен, является ли это правильным решением?
Комментарии:
1. Должен ли я всегда публиковать оба — да. Что, если вы внесете изменение в базу данных, которое нарушит работу другого приложения?
2. Ну .. это все равно приведет к сбою 🙂