1

Я хотел протестировать несколько подходов при создании приложения (сначала DB, сначала Model, сначала кода). После использования T4Scaffolding и с большим количеством проблем с изменениями в базе данных DB я, хотя EF был недостаточно гибким. Теперь я нашел очень странную вещь. Я оставил один «DefaultConnection», указанный в Web.Config, и указывает на единственный файл .mdf в папке App_Data решения. Используя подход Code-First, я создал свои сущности (классы), затем архивные хранилища, контекст, все работает почти нормально, за исключением того, что я получаю даже данные, которые были сохранены до того, как я «удалил» и обновил базу данных. Но после проверки в VS Server Explorer база данных содержит только таблицы, используемые для Identity (Users, Roles), и это показывает мне, что фактическая база данных находится где-то в другом месте. Я подозреваю, что он находится в папке «C: \ Users {MyUser} \ AppData \ Local \ Microsoft \ Microsoft SQL Server Local DB \ Instances». Но я не могу открыть файлы .mdf оттуда, чтобы проверить, так как они уже используются. Я застрял. Где мои данные ???Где хранится база данных LocalDB?

Забыл упомянуть, что у меня есть два контекста в моем приложении, поэтому я получаю предупреждение в PM Console: «В сборке было найдено более одного типа контекста ...».

Howerver, первый «ApplicationDbContext», и это относится только к идентичности БД:

public class ApplicationUser : IdentityUser 
{ 
} 

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection") 
    { 
    } 
} 

и второй контекст связан с этой единой БД Соединение с Web.Config, и она имеет бизнес-логики объекты

+0

Если вы хотите открыть .mdf, используемый MS Server, сначала отключите службу SQL-сервера от служб. Кроме того, открывая Management Studio и просматривая свойства db, вы можете указать, где хранится mdf – apomene

+0

, но когда я говорю «open», я имею в виду открытый в Server Explorer, который использует SQL-соединение, которое невозможно установить с остановленным сервером –

+0

Server Explorer? ... к какой клиентской программе вы обращаетесь? – apomene

ответ

1

Это немного странно. Строки подключения выбираются из Web.Config, и он должен быть там. Повторите проверку. Также по умолчанию EF создает базу данных в папке App_Data. Таким образом, вы можете искать эту папку. Также в случае, если вам будет неудобно работать с несколькими контекстами, вы можете просто скопировать все DbSets в ApplicationDbContext, и он должен работать нормально.

Edit: Вы можете указать один и тот же CS для другого контекста, например:

namespace MvcProject 
{  
    public class NorthwindDb : DbContext  
    {   
     public NorthwindDb() : 
      base("DefaultConnection") {} 
    } 
} 

Здесь при вызове конструктора базового класса, мы можем передать имя строки подключения. По умолчанию Identity использует DefaultConnection, и мы можем установить это в нашем контексте.

+0

Я проверил, но ничего нового. Файл db из App_Data одинаковый из Server Explorer, и тот же и единственный из Web.Config. Во всем решении нет другого свойства connectionString. Но этот файл db имеет только таблицы Identity. –

+0

Попробуйте изменить другую строку подключения контекста, чтобы указать на DefaultConnection. –

+0

Но где строки подключения для контекста, если не в Web.Config? –

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