ここ数日、Entity Framework を使用して C# アプリケーション (Visual Studio 2010 Express を使用) を SQL Server 2008 R2 データベースに接続する方法を最終的に研究していましたが、完全に行き詰まりました。
VS で新しい DataSource を追加したい場合、db ファイルのパスを見つけるだけで、最終的にそれを見つけて選択しようとすると、次のエラーがスローされます。
このファイルは既に使用されています。別のアプリケーションで使用されている新しい名前を入力するか、そのファイルを閉じます
データベース ファイルを 2 日間使用していなかったので、それはナンセンスに思えます。そのため、少しグーグルで調べた後、最終的に解決策を見つけ、SQL Server Configuration Manager に入り、唯一の SQL Server を再起動しました。
その後、私の DataSource 接続がついに機能し、今では無敵であり、一日の終わりまでコードを書くつもりだと思っていましたが、数分後に別の問題が発生しました:O (私がここに書いている理由)。
VS アプリケーションで SQL Server の一部を使用すると、 SQL Server が動作しなくなります。そこのデータベースを参照できません。何も変更できません。クエリも使用できません。何もできません。このデータベースは既に使用されていることがわかります。
逆にやっても同じです。
SQL Server 構成マネージャーを使用して SQL Server を再起動し (SQL Server を再び使用できるようにするため)、たとえば、DB クエリ タスクを使用しますSELECT * FROM nameDatabase
。
次に、SQL Server がいくつかの名前を入力する必要があるコンボボックスがある C# アプリケーションをデバッグしようとしましたが、SQL Server にアクセスできないというエラーが表示されました。(正確なエラーは今は言えませんが、グーグルで調べたところ、SQL Server にアクセスできないことを意味していることがわかりました)。
誰かがそのコードを見たい場合は、次のとおりです。
using (var entities = new PropertyDatabaseEntities())
{
var userNames = entities.Login
.Select(login => login.Username)
.ToArray();
comboboxLogin.Items.Clear();
comboboxLogin.Items.AddRange(userNames);
}
しかし、SQL Server を再起動して、SQL Server から何かを使用する前にこのデバッグを有効にすると、機能します。
一部の人々は、接続を閉じていないと言っていましたが、SQL Server を最初に使用しても、VS と SQL Server 間の接続を使用できないため、そうではありません。
私は本当に立ち往生しています。
*接続文字列
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<connectionStrings><add name="Final.Properties.Settings.PropertyDatabaseConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient" /><add name="LoginEntities" connectionString="metadata=res://*/DataAccess.LoginModel.csdl|res://*/DataAccess.LoginModel.ssdl|res://*/DataAccess.LoginModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Login.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /><add name="PropertyEntities" connectionString="metadata=res://*/DataAccess.PropertyModel.csdl|res://*/DataAccess.PropertyModel.ssdl|res://*/DataAccess.PropertyModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Property.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /><add name="PropertyDatabaseEntities" connectionString="metadata=res://*/DataAccess.PropertyDatabaseModel.csdl|res://*/DataAccess.PropertyDatabaseModel.ssdl|res://*/DataAccess.PropertyDatabaseModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /></connectionStrings>
</configuration>