我为我的 Asp.Net MVC 应用程序的数据库访问创建了一个 ODBC DSN。主要原因之一是它可以轻松地将数据库凭据(例如服务器地址、端口、用户名和密码)置于源代码控制之外,而不会妨碍我的发布能力。
所以我将连接更改为DSN=MyDSN
.
不幸的是,当我运行实体框架查询时,我得到Exception Details: System.ArgumentException: Keyword not supported: 'dsn'.
有谁知道我做错了什么?
如果您想使用 ODBC DSN,您的连接字符串必须使用System.Data.Odbc
本机提供程序而不是托管 SQL 客户端。
Edit:
那么现在从理论到实践。由于内部 EF 实现,它不起作用。 EF 内部调用一些尝试获取的方法DbProviderFactory
从创建的连接。问题是这个属性定义在DbConnection
它返回null
. Only SqlConnection
覆盖属性并返回正确的工厂。因此 EF 不适用于默认的 ODBC 提供程序并且here https://stackoverflow.com/questions/344449/why-doesnt-entity-framework-support-odbc非常清楚地描述了原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)