одновременное соединение SqlConnection и EntityConnection с локальным Sql Express Server - PullRequest
1 голос
/ 05 февраля 2009

Я использую Linq2Entity для большинства операций с базой данных. Однако для создания базы данных, создания таблицы и начальной вставки данных я использую простые файлы SQL. Поэтому мне нужны как SqlConnection, так и EntityConnection. К сожалению, Entity Framework начинает жаловаться на то, что Sql Server не прослушивает другой конец канала.

Я не уверен, в чем здесь проблема, это может быть связано с экземпляром пользователя. Очистка пула SqlConnection или удаление экземпляра соединения не помогает.

Я использую следующую строку подключения:

"Источник данных =. \ SQLEXPRESS; Начальный каталог = имя_базы; Интегрированная безопасность = SSPI;"

Обновление:

Я пытался использовать EntityConnection для обслуживания базы данных, но у меня возникли проблемы. Я не могу использовать EntityConnection для создания баз данных и удаления баз данных. Следующий синтаксис не поддерживается для EntityConnection, но отлично работает для SqlConnection до ms SQL Express.

CREATE DATABASE silverfit ON ( NAME = silverfit, FILENAME = 'c:\silverfit\silverfit.mdf' );

Также по какой-то причине EntityConnection не позволяет мне изменять базы данных, которые необходимы для удаления базы данных. Боюсь, мне все еще нужен SqlConnection для создания базы данных и таблиц ..

Есть ли способ для сосуществования SqlConnections и EntityConnections для локальных баз данных MS SQL Express?

Спасибо, Wouter

Ответы [ 5 ]

2 голосов
/ 06 июня 2009

Вы пытались создать SqlConnection, который затем передавали конструктору для вашего EntityConnection? Одна из перегрузок для EntityConnection принимает MetadataWorkspace и DbConnection (из которого происходит SqlConnection.) Небольшой недостаток этого заключается в том, что вы должны создать MetadataWorkspace вручную, который собирает файлы .csdl, .ssdl и .msl, которые определяют ваши рабочая среда. Однако в долгосрочной перспективе вы сможете использовать одно соединение как для выполнения запросов DML, так и для использования Entity Framework.

1 голос
/ 06 июня 2009

Вы пытались использовать EntityConnection.StoreConnection, чтобы получить SqlConnection и выполнить с ним команды?

1 голос
/ 05 февраля 2009

Я не согласен, что вам нужно простое соединение SQL и соединение Entity для этой задачи, по крайней мере, как вы ее описали. Вы можете выполнить SQL, используя соединение Entity. Посмотрите на EntityConnection.CreateDbCommand . Естественно, здесь есть опасность, что вы делаете вещи, специфичные для DB-сервера, на экземпляре, не относящемся к DB-серверу, например EntityConnection. Но в данном случае это, вероятно, лучше, чем отдельное соединение.

0 голосов
/ 08 июня 2009

Поддерживает ли ADO.NET соединение, открытое к базе данных, через пул соединений? Попробуйте добавить Pooling = False в строку подключения, так как это может привести к закрытию базы данных перед ее удалением.

0 голосов
/ 08 июня 2009

Если вы пытаетесь присоединить файл базы данных к SQL Server Express во время выполнения, что выглядит так, как если бы вы были, тогда на нем может быть открыто только одно соединение. Это проблема для других вещей, а не только для того, что вы пытаетесь достичь. Например, вы подключаетесь к «c: \ silverfit \ silverfit.mdf» через обозреватель серверов в VS и пытаетесь открыть одну из таблиц в БД. После того, как вы откроете таблицу, попробуйте запустить приложение. Это будет бомба.

Однако, если вы откроете SQL Management Studio Express (вы можете загрузить его здесь ), а затем присоединить базу данных к SQL Server, проблемы, с которыми вы столкнулись, должны исчезнуть. В этот момент вы сможете открыть несколько соединений с вашей базой данных через SQLConnection или EntityConnection.

Присоединение вашей базы данных во время выполнения к SQL Server Express Engine действительно хорошо работает только для демонстрационных целей или для проверки концепции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...