0

EF5 を使用して SQL データベースにマップする Web アプリがあります。これは、追加のテーブルを追加した標準のメンバーシップ データベースです。そのプロジェクトのチャンピオンのように動作します。

私は2番目のプロジェクトを持っています.TCPサーバーを実行しているWindowsサービスは、同じデータベースにアイテムを挿入する必要があります。したがって、この 2 番目のプロジェクトから Web アプリを参照し、必要に応じて DbContext とエンティティの種類を確認できます。

ただし、実行時に、DbSet にデータが入力されることはありません。次のように、接続を明示的に開いてクエリも実行しようとしました。

 public MyContext()
        : base("DefaultConnection")
    {            
        try
        {
            Database.Connection.Open();
            var command = new System.Data.SqlClient.SqlCommand("SELECT * FROM dbo.Trackers", (SqlConnection) Database.Connection);
            var reader = command.ExecuteReader();
            bool result = reader.Read();
        }
        catch (Exception exception)
        {
            //handle exception
        }

        this.Database.Connection.Close();
    }

結果は false ですが、接続が作成され、リーダーはテーブルに 4 つのフィールドがあることを認識しています。これが私のWebアプリでは機能するが、参照アプリでは機能しない理由を知っている人はいますか?

4

1 に答える 1

0

web.config ファイルからの接続文字列は、Web アプリとして実行している場合にのみ有効であることを忘れていました。TCP サービス .exe には、App.config 内の接続文字列の独自のコピーが必要です。たまたま、TCP サービスの既定の (暗黙的な) 接続文字列が、有効であるがのデータベースのコピーに接続されていました。

于 2013-06-10T23:20:43.543 に答える