-1

Я разработал службу Windows, с помощью Entity Framework 6.службы Windows не удается подключиться к БД с EF6

я запустить службу, и когда он пытается подключиться к базе данных, он выдает следующее исключение:

В файле конфигурации приложения не может быть найдена строка с именем 'testEntities'.

поэтому я решил изменить этот код в test.Context.cs

public testEntities() 
     : base("name=testEntities") 
    { 
    } 

в этом:

public testEntities() 
     : base("data source=MyLocalServer/sqlexpress;initial catalog=test;persist security info=True;user id=xxxxxx;password=xxxxxxx;MultipleActiveResultSets=True;App=EntityFramework") 
    { 
    } 

на практике я изменил название субъекта в строке подключения. Но это вызывает следующее исключение:

Контекст используется в режиме Code First с кодом, который был сгенерирован из файла EDMX для базы данных First или Model First. Это будет работать неправильно. Чтобы устранить эту проблему, не удаляйте строку кода, которая выдает это исключение.

Если вы хотите использовать Database First или Model First, убедитесь, что строка подключения Entity Framework включена в app.config или web.config проекта запуска. Если вы создаете свой собственный DbConnection, убедитесь, что это EntityConnection, а не какой-либо другой тип DbConnection, и передайте его одному из базовых конструкторов DbContext, которые принимают DbConnection.

Чтобы узнать больше о Code First, базы данных Во-первых, и модель Сначала обратитесь к документации Entity Framework здесь: http://go.microsoft.com/fwlink/?LinkId=394715

в растворе есть 2 проекта (в том числе WiX для создания пакета установки). Такая же ошибка возникает, если я устанавливаю свой проект как «StartUp Project».

+0

Как говорится в ошибке: ** убедитесь, что строка подключения Entity Framework включена в app.config или web.config проекта запуска ** – stuartd

ответ

1

Добавьте следующие файлы в файл app.config.

<configuration> 

    <configSections> 
    <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.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 

    <connectionStrings> 
    <add name="testEntities" connectionString="metadata=res://*/Models.MyModel.csdl|res://*/Models.MyModel.ssdl|res://*/Models.MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=data source=MyLocalServer/sqlexpress;initial catalog=test;persist security info=True;user id=xxxxxx;password=xxxxxxx;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    /connectionStrings> 

</configuration> 

Адрес: MyModel - название модели вашей базы данных.

0

Вы уже проверили на App.config или Web.Config файлы? Именно там, где строка соединения определена для подключения проекта к базе данных, убедитесь, что когда вы создаете код First, чтобы найти свой сервер, на котором находится база данных, это отредактирует файл и сгенерирует внутри тега строки подключения, который вы можете редактировать как хотите.

0

код Follow

public testEntities() 
     : base("name=testEntities") 
    { 
    } 

говорит, что имя строки соединения в app.config является testEntities

Добавить строку подключения в app.config

<configuration> 
    ... 

    <connectionStrings> 
    <add name="testEntities" connectionString="data source=MyLocalServer/sqlexpress;initial catalog=test;persist security info=True;user id=xxxxxx;password=xxxxxxx;" providerName="System.Data.EntityClient" /> 
... 
0

Я думаю, что лучше добавить строка подключения к приложению.конфиг

Add connectionstring in app.config

Но если вы хотите, чтобы ваше решение. для заставить его работать

Вы не должны устанавливать соединения по умолчанию завод в в app.config

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
    <parameters> 
     <parameter value="System.Data.SqlServerCe.4.0" /> 
    </parameters> 
    </defaultConnectionFactory> 
</entityFramework> 

Итак, вы должны удалить defaultConnectionFactory.

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