Arhn - архитектура программирования

Где моя строка подключения?

Я создал проект под названием Repository.EF для обработки доступа к данным в решении n-tire. Я добавил EF в проект Repository.EF, где у меня есть все мои POCO. Затем я создал в этом проекте класс DbContext, подобный этому.

namespace LearningSpike.Repositories.EF
{
class GlassContractDbContext:DbContext
    {
    public GlassContractDbContext() : base("GlassContractContext")
    {
    }

    public DbSet<MetalStock> MetalStock { get; set; }


    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Configurations.Add(new MetalStockConfiguration());
    } 
}

Затем перешел в консоль диспетчера пакетов и сделал

Enable-Migrations 

Затем установите

 AutomaticMigrationsEnabled = true;

затем

Update-Database

Все работает нормально. Но проблема в том, что я не знаю, где находится строка подключения. Кажется, что в этом конкретном проекте нет connectionString. Я знаю, что если бы у меня был шаблон MVC4/5, в web.config была бы строка подключения. Как найти строку подключения? Как мне теперь все настроить? Например, я помню, как делал это с connectionString в приложении MVC5.

 MultipleActiveResultSets=true

Как мне это сделать сейчас?

Спасибо! Ваше здоровье!

PS

Также у меня есть следующий код в моем App.config в проекте Repository.EF.

 <?xml version="1.0" encoding="utf-8"?>
 <configuration>
 <configSections>

 <section name="entityFramework"
 type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, 
 EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  
 requirePermission="false" />
 <!-- For more information on Entity Framework configuration, visit 
 http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
 <entityFramework>
 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory,
 EntityFramework" />
<providers>
  <provider invariantName="System.Data.SqlClient" 
    type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  </providers>

</entityFramework>

  • ваша строка подключения должна быть в web.config вашего веб-проекта 27.12.2014
  • Привет, спасибо за быстрый ответ. Однако проблема в том, что в этом проекте нет web.config. Этот проект представляет собой просто библиотеку классов, в которой у меня есть все мои файлы POCO . Поэтому я добавил к нему EF. Идея состоит в том, чтобы отделить этот слой и использовать его только для доступа к данным. 27.12.2014
  • Ваша отдельная библиотека классов будет загружена в какое-либо приложение для работы, поэтому она будет использовать строку подключения из своего «хост-приложения». 27.12.2014
  • Когда вы создаете библиотеку и на библиотеку ссылаетесь из другого проекта, EF считывает конфигурацию, относящуюся к запускаемому проекту. в противном случае у вас есть app.config со строкой подключения внутри, иначе он должен быть в вашем datacontext ctor 27.12.2014
  • Я добавил сюда свой app.config. Пожалуйста, посмотрите и скажите, могу ли я добавить сюда свою строку подключения? 27.12.2014

Ответы:


1

При запуске консоли диспетчера пакетов по умолчанию будет использоваться стартовый проект (если вы не укажете параметр -project в команде или не воспользуетесь раскрывающимся списком в диспетчере консоли). Оттуда он будет искать ваши строки подключения в файлах конфигурации этого проекта. Если это веб-проект, это будет в файле web.config.

Если вы не добавили свою собственную строку подключения в этот проект, EF сможет использовать свою собственную строку, полученную из имени проекта, и создать файл mdf, который он прикрепляет на лету во время выполнения.

Если вы хотите добавить строку подключения (вы можете сделать это в любом из ваших файлов конфигурации, но, судя по звуку, вы хотите добавить это в app.config в своем проекте уровня данных), вы можете добавить это ниже разделов конфигурации:

<connectionStrings>
<add name="MyDatabase"
     providerName="System.Data.SqlClient"
     connectionString="Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"/>
</connectionStrings>
26.12.2014
  • Спасибо за ответ. Я изменил проект, используя раскрывающийся список, поэтому все папки миграции и прочее находятся в правильном проекте, где я их хотел. Как добавить собственную строку подключения? 27.12.2014
  • вы можете указать имя строки подключения и имя проекта из другого проекта, но при желании сохраните свои миграции на своем уровне данных. например. update-database -project learningspike.web -connectionstringname GlassContract 27.12.2014
  • Не могли бы вы объяснить мне это подробно. Извините за беспокойство. Я понимаю вашу концепцию. Как это сделать? 27.12.2014
  • я расширил свой ответ, включив в него информацию о том, как добавить строку подключения в ваш app.config в вашем проекте уровня данных. 27.12.2014
  • Привет, Мэтт! Большое спасибо за ваши усилия. Есть еще небольшая проблема. Я думал, что EF создаст новую базу данных в папке, которую я назвал в строке подключения. Но это все еще похоже на игнорирование этого и создание своего собственного. Я удалил и добавил все обратно, но все равно не повезло. Возможно, мне нужно больше узнать об EF и строках подключения. 28.12.2014
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..