エンティティフレームワークを使用して接続を開こうとすると、このエラーが発生し続けます。データベースからモデルをまったく問題なく更新できますが、デバッグでコードを実行すると、このエラーが発生します。(Windows 2008 VMで実行)
エラーが表示されるコードフラグメントは次のようになります。
public partial class SpatialDatabase : global::System.Data.Objects.ObjectContext
{
try
{
using (EntityConnection conn = new EntityConnection(this.Connection.ConnectionString))
{
conn.Open(); // <== fails here
EntityCommand cmd = conn.CreateCommand();
...
これは、Oracleデータベースへの接続です。
このコードは他の場所でも問題なく実行されているようですので、接続に関係しているように感じます。Oracle for .NET(ODAC)ドライバーを使用しています。64ビットか32ビットかはわかりませんが、モデルを更新するときは機能しますが、デバッグで実行するときは機能しません。
(何を表示するかを知っていれば、追加のコードを表示します!)
app.configからの接続文字列:
<connectionStrings>
<add name="SpatialDatabaseContext" connectionString="metadata=res://*/SpatialDatabase.csdl|res://*/SpatialDatabase.ssdl|res://*/SpatialDatabase.msl;provider=Oracle.DataAccess.Client;provider connection string="DATA SOURCE=ds_name_here;PASSWORD=password_here;PERSIST SECURITY INFO=True;USER ID=user_id_here"" providerName="System.Data.EntityClient" />
</connectionStrings>
[編集]
System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
[/編集]
[編集2]
上記は赤いニシンかもしれません。もう一度実行しましたが、そのエラーは表示されませんでしたが、次のInnerExceptionが表示されました。
[Oracle.DataAccess.Client.OracleException] = {"ORA-12154: TNS:could not resolve the connect identifier specified"}
[/ Edit2]
[編集3]
代わりにEFOracleProviderを使用しようとしました。ビルドは問題ありませんが、エンティティモデルを生成すると、次のようになります。
Microsoft (R) EdmGen version 3.5.0.0
Copyright (C) 2008 Microsoft Corporation. All rights reserved.
error 7001: The provider did not return a ProviderManifestToken string.
Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.
An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
Generation Complete -- 1 errors, 0 warnings
32ビットバージョンと64ビットバージョンの両方のOracleクライアントコンポーネントがインストールされています。32ビットと64ビットのどちらを実行するかを選択するにはどうすればよいですか?
[/ Edit3]