我以为我会试验一下Scott Guthrie 关于Entity Framework 4的代码优先开发人员的最新文章。我不是在使用Sql Server,而是在尝试使用MySql。这是我的web.config(这是一个Asp.Net MVC 2应用程序)的相关部分:
<connectionStrings> <add name="NerdDinners" connectionString="Server=localhost; Database=NerdDinners; Uid=root; Pwd=;" providerName="MySql.Data.MySqlClient"/> </connectionStrings> <system.data> <DbProviderFactories> <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories> </system.data>
就像本教程一样,我希望EF4为我自动生成数据库。相反,它抛出ProviderIncompatibleException,并带有内部异常,抱怨NerdDinners数据库不存在。
很公平; 我去为它创建了MySql数据库,只是为了看看事情是否可行,并得到了另一个ProviderIncompatibleException。这次,“提供程序不支持DatabaseExists”。
我承认,这是我第一次真正研究Entity Framework(我主要是对Linq to Sql的坚持),而这一切都在上周发布的Code-First CTP上运行。也就是说,我在这里做错什么了吗,还是可以解决一个已知问题?
是的,终于有了一些兴趣点了。
总而言之,这是一条漫长的路,但最终
**更新要注意的另一点是,当使用MySQL部署MVC站点时,您最需要将DataFactory添加到web.config中。通常是因为那里的MySql连接器和支持的MySQL版本不同。(在反复抓挠之后,可以通过其他来源找到答案)只需添加:
<system.data> <DbProviderFactories> <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories> </system.data>
作为web.config的单独部分,请 确保设置 与站点一起部署的MySQL.Data.dll 的版本号 (也是“将MySQL DLL复制为本地”以确保兼容性的一个好主意。