1

ほとんどのデータベース操作に Linq2Entity を使用しています。ただし、データベースの作成、テーブルの作成、および最初のデータの挿入には、プレーン SQL ファイルを使用します。したがって、SqlConnection と EntityConnection の両方が必要です。残念ながら、エンティティ フレームワークは、Sql サーバーがパイプの反対側でリッスンしていないと不平を言い始めます。

ここで何が問題なのかわかりません。ユーザーのインスタンス化が原因である可能性があります。SqlConnection のプールをクリアしたり、接続インスタンスを破棄したりしても役に立ちません。

私が使用している接続文字列は次のとおりです。

"Data Source=.\SQLEXPRESS; Initial Catalog=dbname; Integrated Security=SSPI;"

アップデート:

データベースのメンテナンスのために EntityConnection を使用しようとしましたが、問題が発生しています。EntityConnection を使用してデータベースを作成したり、データベースを削除したりできません。次の構文は EntityConnection ではサポートされていませんが、ms SQL Express への SqlConnection では正常に機能します。

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

また、何らかの理由で、EntityConnection では、データベースを削除するために必要なデータベースを変更できません。データベースとテーブルを作成するには、まだ SqlConnection が必要です。

ローカルの ms SQL Express データベースで SqlConnections と EntityConnections を共存させる方法はありますか?

ありがとう、ウーター

4

5 に答える 5

2

EntityConnection のコンストラクターに渡す SqlConnection を作成しようとしましたか? EntityConnection のオーバーロードの 1 つは、MetadataWorkspace と DbConnection (そこから SqlConnection が派生します) を取ります。これのわずかな欠点は、MetadataWorkspace を手動で作成する必要があることです。ワークスペース。ただし、長期的には、DML クエリの実行と Entity Framework の使用の両方で単一の接続を共有できるはずです。

于 2009-06-06T01:26:16.117 に答える
1

EntityConnection.StoreConnectionを使用してSqlConnectionを取得し、それを使用してコマンドを実行しようとしましたか?

于 2009-06-06T01:10:20.440 に答える
1

少なくともあなたが説明したように、このタスクにプレーンSQL接続とエンティティ接続が必要であることに同意しません。エンティティ接続を使用してSQLを実行できます。EntityConnection.CreateDbCommandを見てください。当然、ここでは、EntityConnectionなどの非DBサーバー固有のインスタンスでDBサーバー固有の処理を実行しているという危険があります。ただし、この場合は、別の接続を使用するよりもおそらく優れています。

于 2009-02-05T17:55:00.330 に答える
0

実行時にデータベース ファイルを SQL Server Express にアタッチしようとしている場合は、そのように見えますが、一度に開くことができる接続は 1 つだけです。これは、あなたが達成しようとしていることだけでなく、他のことの問題でもあります。たとえば、VS のサーバー エクスプローラーを介して「c:\silverfit\silverfit.mdf」に接続し、データベース内のテーブルの 1 つを開こうとするとします。テーブルを開いた後、アプリケーションを実行してみてください。爆撃します。

ただし、SQL Management Studio Express (ここからダウンロードできます) を開き、データベースを SQL Server に接続すると、発生している問題は解消されます。その時点で、SQLConnection または EntityConnection を介して、データベースへの複数の接続を開くことができるはずです。

実行時にデータベースを SQL Server Express Engine にアタッチすることは、実際には、デモや概念実証の目的でのみうまく機能します。

于 2009-06-08T12:28:07.897 に答える
0

ADO.NET は、接続プールを通じてデータベースへの接続を保持していますか? Pooling=False を接続文字列に追加してみてください。これにより、データベースを削除する前にデータベースを閉じることができる場合があります。

于 2009-06-08T19:00:53.217 に答える