powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EntityFramework не находит ConnectionString в Аpp.congig
25 сообщений из 29, страница 1 из 2
EntityFramework не находит ConnectionString в Аpp.congig
    #38938063
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю первые шаги в EntityFramework.
MVS 2013 Ultimate Edition SP 4
EntityFramework 6.1.3
Все, как по учебнику. Создаю шаблон из базы.
Делаю new Connection. Указываю имя SQL сервера и имя базы. Тест проходит.
Создается схема.
далее пишу две строки:

Код: c#
1.
2.
var context = new BackgroundSeContext();
var domains = context.Domain.ToList();


и на второй строке падаю с ошибкой:
No connection string named 'BackgroundSeContext' could be found in the application config file.
в System.Data.Entity.Internal.LazyInternalConnection.get_ConnectionHasModel()
в System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
в System.Data.Entity.Internal.InternalContext.Initialize()
в System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
в System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
в System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator()
в System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator()

Смотрю в App.Config - всё на месте:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <connectionStrings>
    <add name="BackgroundSeContext" connectionString="metadata=res://*/BackgroungSeModel.csdl|res://*/BackgroungSeModel.ssdl|res://*/BackgroungSeModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=ZALMAN;initial catalog=BALT_OBD_BackgroundSE;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;"
      providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

Что можно попробывать сделать, чтобы заработало?
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38938431
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нарыл вот что - автогенератор кода сгенерил такую вот строку:
Код: c#
1.
2.
3.
4.
public BackgroundSeModel()
    : base("name=BackgroundSeModel")
{
}


Я ее исправил таким образом:
Код: c#
1.
2.
3.
4.
public BackgroundSeModel()
    : base("BackgroundSeModel")
{
}


т.е убрал "name="
После этого connectionString начала определяться. Но теперь вылезла другая ошибка:
No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file.

Засада. Что делать?
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38938624
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зарегистрировал провайдер насильно ручками в коде:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class MyConfiguration : DbConfiguration
{
    public MyConfiguration()
    {
        SetProviderServices(
            SqlProviderServices.ProviderInvariantName,
            SqlProviderServices.Instance);
    }
}


Проблема решилась.

Какие выводы?
EF до сих пор очень сырой. Элементарные операции, которые должны делаться 'на лету', приходиться делать самому. Причем, для новичка в EF, это очень проблематично и занимает много времени.
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38938647
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsaf,
Этого всего не надо. Просто строка конекции должна быть в самом web проекте.
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38938648
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня не web проект, и даже не winforms, а консольное приложение, которое должно обрабатывать данные в фоновом режиме.
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38938649
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsaf Какие выводы?
EF до сих пор очень сырой. Элементарные операции, которые должны делаться 'на лету', приходиться делать самому. Причем, для новичка в EF, это очень проблематично и занимает много времени.

Вы не правы.

Код: xml
1.
2.
3.
  <connectionStrings>
    <add name="DefaultConnection" connectionString="server=.\SQLEXPRESS;database=mydbi;user id=sa;password=111111111" providerName="System.Data.SqlClient" />
  </connectionStrings>



Видите строчка providerName="System.Data.SqlClient" ?

Без неё как EF должен догадаться, какой провайдер надо использовать?
Или по-вашему, если EF не экстрасенс, то он сразу сырой?
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38938653
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsafЗарегистрировал провайдер насильно ручками в коде:

это делается не кодом, а секцией в app.config

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<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>

...

</configuration>
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38938821
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsafДелаю первые шаги в EntityFramework.

и после этих слов вы имеет право говорит что то про готовый продукт, который используют сотни прогеров и проектов? Вывод простой: не умеет готовить - не надо сразу ругаться на инструмент, может перечитать рецепт.
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38938981
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рад, что у вас все работает. Но лично у меня быстрого старта не получается. До сих пор. Есть большое желание показать экран по скайпу, чтоб указали на ошибки, что делаю не так. Если кому-то будет не сложно, киньте письмо в личку. Буду очень признателен.
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38939098
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsafРад, что у вас все работает. Но лично у меня быстрого старта не получается. До сих пор. Есть большое желание показать экран по скайпу, чтоб указали на ошибки, что делаю не так. Если кому-то будет не сложно, киньте письмо в личку. Буду очень признателен.

Создаёшь в студии новый проект, допустим ASP.NET MVC 5, там уже рабочий пример использования EF. Куда уж проще-то?
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38939120
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочется просто материться. Создал с нуля консольное приложение. Там все работает. Но у у меня рабочий проект - это библиотека. Там то почему косяки лезут? Делаю все тоже-самое. Один в один!
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38939126
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsafХочется просто материться. Создал с нуля консольное приложение. Там все работает. Но у у меня рабочий проект - это библиотека. Там то почему косяки лезут? Делаю все тоже-самое. Один в один!

Библиотека тащит инфу из конфига приложения, а не библиотеки. Т.е. если вы в библиотеке сделали app.config и туда добавили строку подключения, это не сработает.
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38939133
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну наконец-таки, лёд тронулся. А я два дня варился в собственном соку. Спасибо!
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38939144
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttБиблиотека тащит инфу из конфига приложения, а не библиотеки. Т.е. если вы в библиотеке сделали app.config и туда добавили строку подключения, это не сработает.А как-же тогда поступать? Мне EF нужно запускать именно из библиотеки. В основном приложении он не нужен.
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38939155
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsafhVosttБиблиотека тащит инфу из конфига приложения, а не библиотеки. Т.е. если вы в библиотеке сделали app.config и туда добавили строку подключения, это не сработает.А как-же тогда поступать? Мне EF нужно запускать именно из библиотеки. В основном приложении он не нужен.

Концепция такова: приложение настраивается в конфиге приложения. Все подключенные библиотеки также настраиваются в этот конфиге приложения.

Вы же не настраиваете EF в его собственном конфиге, типа EntityFramework.config, правильно? было бы странно, это всего лишь библиотека, и как она будет использоваться решать приложению. Сама по себе библитека не работает.

Так что тащите конфиг либы в конфиг приложения. И пусть это вас не расстраивает, это правильно.
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38939197
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После того, как перетащил настройки app.config из проекта либы в основное приложение, то его из проекта либы можно удалять? (Его создал EF). Или он должен присутствовать и в либе и в основном проекте?
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38939225
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оставил app.config и там и там. Ошибка
The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

Буду смотреть на сайте microsoft? что опять не так. Или dll от EF тоже нужно в основное приложение добавлять?
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38939234
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsafИли dll от EF тоже нужно в основное приложение добавлять?

Естественно!
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38939241
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Теперь все получилось. Еще раз спасибо, hVostt !!!
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38939313
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsaf, может пригодится - тынц
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38942208
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось запустить dll с EF без установки EF в основную сборку и без добавления app.config в основную сборку.

Для этого мы должны сделать 2 вещи.
1. Создать в коде connectionString
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
var sqlBuilder = new SqlConnectionStringBuilder
{
    DataSource = server,
    InitialCatalog = context,
    IntegratedSecurity = true
};
var connectionString = sqlBuilder + ";MultipleActiveResultSets=True;App=EntityFramework";

var entityBuilder = new EntityConnectionStringBuilder
{
    Provider = "System.Data.SqlClient",
    ProviderConnectionString = connectionString,
    Metadata = @"res://*/BackgroundModel.csdl|res://*/BackgroundModel.ssdl|res://*/BackgroundModel.msl"
};

2. Добавить конструктор для вашего контекста. Конструктор должен использовать вашу строку подключения. Делаете в отдельном файле такую перегрузку:
Код: c#
1.
2.
3.
4.
5.
6.
 public partial class BackgroundContext : DbContext
 {
     public BackgroundContext(string connectionString)
         : base(connectionString)
     {
     }

И теперь создаете новый объект, используя вашу строку:
Код: c#
1.
_context = new BackgroundContext(entityBuilder.ToString());

Цветов не надо, можно пива ;)
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38942281
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsaf,

Код: c#
1.
2.
3.
4.
5.
6.
7.
var sqlBuilder = new SqlConnectionStringBuilder
{
    DataSource = server,
    InitialCatalog = context,
    IntegratedSecurity = true
};
var connectionString = sqlBuilder + ";MultipleActiveResultSets=True;App=EntityFramework";


Вот так лучше, имхо:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
var sqlBuilder = new SqlConnectionStringBuilder
{
    DataSource = server,
    InitialCatalog = context,
    IntegratedSecurity = true,
    ApplicationName = "MyAppName", 
    MultipleActiveResultSets = true
};
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38942622
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsafПолучилось запустить dll с EF без установки EF в основную сборку и без добавления app.config в основную сборку.

а смысл?
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38942636
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

я объясню причины, почему это глупая затея

1. При деплое у приложения есть один конфиг, который настраивается соответствующим образом, например, при деплое на тест одна строка соединения, при деплое на боевой сервер другая, и при инсталляции конфигурируется один конфиг приложения, он может быть разнесён на несколько файлов, но по сути это один конфиг.

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

Существенных причин закрывать EF в сборке вообще не вижу, если только сборка не подключается динамически (например через MEF) на манер плагина, в нормальной ситуации такие ковыряния приносят в последствии только боль людям, вынужденным дорабатывать и поддерживать подобные выкрутасы. Так что нафиг так делать не надо, если нет действительно обоснованных причин.
...
Рейтинг: 0 / 0
EntityFramework не находит ConnectionString в Аpp.congig
    #38942878
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смысл простой.

dll будет записывать данные в базу. Подключать к своему проекту ее будут совсем другие люди, которые и знать не хотят о существовании EF и о всяких cоnnectionString'ах. Это внутренняя кухня самой dll. Внутри dll есть механизм, который позволяет знать, где она запущена и какой должен быть connectionString.
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EntityFramework не находит ConnectionString в Аpp.congig
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]