2011-07-04 25 views
6

Creé un DSN ODBC para el acceso a la base de datos de mi aplicación Asp.Net MVC. Una de las principales razones es que hace que sea fácil mantener las credenciales de la base de datos (como la dirección del servidor, el puerto, el nombre de usuario y la contraseña) fuera del control de la fuente sin obstaculizar mis habilidades de publicación.Palabra clave no admitida excepción cuando intento utilizar una cadena de conexión que apunta a un ODN DSN

Así que cambié mi conexión para que sea DSN=MyDSN.

Por desgracia, cuando corro mis consultas Entity Framework me sale Exception Details: System.ArgumentException: Keyword not supported: 'dsn'.

¿Alguien sabe lo que estoy haciendo mal?

+0

¿Y qué proveedor usaste? –

+0

Estoy usando 'providerName =" System.Data.SqlClient "' – KallDrexx

Respuesta

9

Si desea utilizar ODBC DSN, su cadena de conexión debe usar el proveedor nativo System.Data.Odbc en lugar del cliente SQL administrado.

Editar:

Así que partiendo de la teoría a la práctica. No funciona debido a la implementación interna de EF. EF internamente llama a algún método que intenta obtener DbProviderFactory de la conexión creada. El problema es que esta propiedad se define en DbConnection y devuelve null. Solo SqlConnection anula la propiedad y devuelve la fábrica correcta. Por lo tanto, EF no funciona con el proveedor predeterminado de ODBC y here está muy claramente descrito por qué.

+0

Cambiando mi nombre de proveedor a 'providerName =" System.Data.Odbc "' me da 'System.Data.ProviderIncompatibleException: se devolvió un null después de llamar a ' Método get_ProviderFactory en una instancia de proveedor de tienda de tipo 'System.Data.Odbc.OdbcConnection'. Es posible que el proveedor de la tienda no esté funcionando correctamente. – KallDrexx

+0

Muestre su cadena de conexión. –

+0

' ' – KallDrexx

Cuestiones relacionadas