6

正常に動作し、データベース サーバーに正しく接続する EF コードの最初の Web アプリがあります。アプリと連携するサービスのロジックをテストするために、ソリューションにコンソール アプリを追加しました。

コンソールアプリがデータを保存していない理由について頭を悩ませていたので、データベースからの単純なフェッチに切り詰めました。元のコンソールアプリがレコードを保存していたことがわかりましたが、指定されたものとは異なるデータベースに接続文字列で。

app.config からの接続文字列は次のとおりです。

  <add name="DatabaseContext" connectionString="Data Source=xxx.xx.x.xx; Initial Catalog=OKWU_Gateway; User ID=xxxxx; Password=********; Trusted_Connection=False;" providerName="System.Data.SqlClient" />
  <add name="DevelopmentEntities" connectionString="metadata=res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=;Data Source=|DataDirectory|\OKWU_Gateway.mdf" providerName="System.Data.EntityClient" />

データベースコンテキストは

コンソールアプリは非常にシンプルです

    Database.SetInitializer<DatabaseContext>(null);
    static void Main(string[] args)
    {
        using (DatabaseContext db = new DatabaseContext())
        {
            var query = from u in db.Users where u.Id == 1 select u;
            foreach (User u in query)
            {
                Console.WriteLine(u.Id + " " + u.FirstName + " " + u.LastName);
            }
            Console.ReadLine();
        }
    }

ただし、リモートサーバーのデータベースに接続する代わりに、開発マシンのsqlexpressに接続して、このデータベースにアクセスしています。

UniversityGateway.Data.DatabaseContext

|DataDirectory| を指すように接続文字列を変更してみました。を SQL 接続文字列に追加しましたが、違いはありませんでした。接続文字列は web.config の内容と同じであり、前述のとおり、Web アプリは正常に動作します。

私が欠けているものについてのアイデア、またはこれを解決するための正しい方向を教えてくれますか?

4

1 に答える 1

0

OK、たくさん掘り下げた後、解決策を見つけました。それが正しい/最良のものであるかどうかはわかりませんが、機能するので先に進むことができます.

コンソール アプリは app.config の接続文字列を尊重していなかったので、コードで接続を次のように指定しました。

db.Database.Connection.ConnectionString

それでも、ここで何かが欠けているように感じます。

私の問題の追加の部分は、EF Codefirst が Sql Server 2005 の DateTime データ型でうまく機能しないことです。

于 2012-06-18T02:53:31.013 に答える