繁体   English   中英

asp.net mvc 5.1 mysql实体框架控制器生成

[英]asp.net mvc 5.1 mysql Entity Framework Controller Generation

我有一个asp.net mvc 5.1解决方案,其中包含3个项目,如下图所示:

Visual Studio中我的解决方案的文件夹结构

我在项目中安装了Ninject,FakeitEasy,MySql nuget软件包,并且在项目中使用了存储库模式,因此我有一个IRepository通用接口,IDbContext接口和一个具体的存储库通用类(所有这些都在AccountManager.Domain中)。 通过所有Ninject和mysql的所有设置,我构建了解决方案,到目前为止效果很好,直到尝试使用Entity Framework提供的脚手架选项添加控制器,并且出现错误消息:

不支持使用相同的DbCompiledModel检索针对“ AccountManager.Domain.Entities.Bank”的元数据,以针对不同类型的数据库服务器创建上下文。 而是为每种使用的服务器类型创建一个单独的DbCompiledModel。

我第一次接触sqlite和EF代码时就看到了这一点。 又是什么意思? 有人看到我没看到的观点吗?

我已经将这种烦恼塞了一段时间,发现它很简单。 像这样用mysqlefconfig装饰上下文类:

[DbConfigurationType(typeof(MySqlEFConfiguration))]

帮助上下文对EF自动创建的迁移表进行必要的调整,使其可与MySql一起使用,这是我的控制器完全不使用脚手架的原因。 我有想法尝试从https://stackoverflow.com/users/3671905/yurko对此进行评论,而脚手架效果很好。

唯一需要注意的是,在完成脚手架之后,您需要取消注释,以便应恢复EF所需的所有MySQL特性。 与创建文件和编辑基础结构文件相比,我更喜欢属性配置。

好吧,对我而言,唯一起作用的是删除配置文件中的所有内容(app.config或web.config)并粘贴以下内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description="Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
    </DbProviderFactories>
  </system.data>
  <connectionStrings>
    <add name="MyContext" connectionString="server=127.0.0.1; User Id=root; Password=password; Persist Security Info=True; database=Test;" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
</configuration>

资源

在那之后,我已经能够生成控制器,我希望它会有所帮助。 (当然,必须正确配置连接字符串)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM