尝试使用指向ODBC DSN的连接字符串时,关键字不受支持的异常

Kal*_*exx 6 c# ado.net entity-framework dsn

我为我的Asp.Net MVC应用程序的数据库访问创建了一个ODBC DSN.其中一个主要原因是,它可以轻松地将数据库凭据(例如服务器地址,端口,用户名和密码)保留在源代码管理之外,而不会妨碍我的发布功能.

所以我改变了我的联系DSN=MyDSN.

不幸的是,当我运行我的实体框架查询时,我得到了 Exception Details: System.ArgumentException: Keyword not supported: 'dsn'.

有谁知道我做错了什么?

Lad*_*nka 9

如果要使用ODBC DSN,则连接字符串必须使用System.Data.Odbc本机提供程序而不是托管SQL客户端.

编辑:

所以现在从理论到实践.由于内部EF实现,它不起作用.EF内部调用一些尝试DbProviderFactory从创建的连接获取的方法.问题是这个属性被定义DbConnection并返回null.仅SqlConnection覆盖属性并返回正确的工厂.因此EF不能与默认的ODBC提供程序一起使用,这里有非常明确的原因.