无法检索元数据

2024-01-15

MVC4 + 实体框架 4.4 + MySql + POCO/代码优先

我正在设置上述配置..这是我的课程:

namespace BTD.DataContext
{
public class BTDContext : DbContext
{

    public BTDContext()
        : base("name=BTDContext")
    {

    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        //modelBuilder.Conventions.Remove<System.Data.Entity.Infrastructure.IncludeMetadataConvention>();
    }

    public DbSet<Product> Products { get; set; }

    public DbSet<ProductImage> ProductImages { get; set; }        


}
}

namespace BTD.Data
{
[Table("Product")]
public class Product
{
    [Key]
    public long ProductId { get; set; }

    [DisplayName("Manufacturer")]
    public int? ManufacturerId { get; set; }

    [Required]
    [StringLength(150)]
    public string Name { get; set; }

    [Required]
    [DataType(DataType.MultilineText)]
    public string Description { get; set; }

    [Required]
    [StringLength(120)]
    public string URL { get; set; }

    [Required]
    [StringLength(75)]
    [DisplayName("Meta Title")]
    public string MetaTitle { get; set; }

    [DataType(DataType.MultilineText)]
    [DisplayName("Meta Description")]
    public string MetaDescription { get; set; }

    [Required]
    [StringLength(25)]
    public string Status { get; set; }

    [DisplayName("Create Date/Time")]
    public DateTime CreateDateTime { get; set; }

    [DisplayName("Edit Date/Time")]
    public DateTime EditDateTime { get; set; }
}

[Table("ProductImage")]
public class ProductImage
{
    [Key]
    public long ProductImageId { get; set; }

    public long ProductId { get; set; }

    public long? ProductVariantId { get; set; }

    [Required]
    public byte[] Image { get; set; }

    public bool PrimaryImage { get; set; }

    public DateTime CreateDateTime { get; set; }

    public DateTime EditDateTime { get; set; }

}
}

这是我的 web.config 设置...

<connectionStrings>
<add name="BTDContext" connectionString="Server=localhost;Port=3306;Database=btd;User Id=root;Password=mypassword;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
  1. 数据库和表已经存在...
  2. 我对 mvc 还很陌生,但正在使用本教程 http://dotnetspeak.com/index.php/2010/10/developing-asp-net-mvc-3-application-with-ef-ctp-part-1/

应用程序构建良好...但是,当我尝试使用 Product (BTD.Data) 作为我的模型类和 BTDContext (BTD.DataContext) 作为我的数据上下文类添加控制器时,我收到以下错误:

无法使用相同的方法检索 BTD.Data.Product 的元数据 DbCompiledModel 用于针对不同类型的数据库创建上下文 不支持服务器。相反,创建一个单独的 DbCompiledModel 对于正在使用的每种类型的服务器。

我完全不知所措——我在谷歌上搜索了我能想到的几乎所有不同的错误消息变体,但都无济于事。

这是我可以验证的事情......

  1. MySql运行正常
  2. 我正在使用 MySql Connector 版本 6.5.4 并创建了其他 ASP.net Web 表单 + 实体框架应用程序,零问题

我还尝试在我的 web.config 中包含/删除它:

<system.data>
<DbProviderFactories>
  <remove invariant="MySql.Data.MySqlClient"/>
  <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.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>

我实际上已经研究这个错误好几天了 - 我现在愿意花钱请人来解决它..不是开玩笑......我真的很喜欢使用 MVC 4 和 Razor - 我很高兴开始做这件事,但现在我非常沮丧 - 我真的很感谢对此的任何帮助/指导!

另请注意 - 我正在使用 Nuget 的 Entityframework...

另注

我使用默认的 Visual Studio 模板来创建包含帐户页面和其他内容的 MVC 项目。我刚刚删除了对添加文件的所有引用,因为它们试图使用不存在的“DefaultConnection” - 所以我认为这些文件可能是导致错误的原因 - 但删除它们后仍然没有运气 -

我只是想让大家知道我正在使用 Visual Studio MVC 项目模板,它预先创建了一堆文件。我将尝试从一个没有这些文件的空白 MVC 项目中重新创建这一切 - 一旦我测试了它,我将更新它

使用 VS MVC 基本模板的更新:出现同样的错误 - 仍然没有解决方案

另一个人遇到同样的问题

这是另一个模仿我的 stackoverflow 问题 https://stackoverflow.com/questions/12165185/mvc4-scaffolding-add-controller-gives-error-unable-to-retrieve-metadata?rq=1- 但是我尝试了他的解决方案,但没有成功 - 也许其他遇到同样问题的人可以从该链接中受益

UPDATE

我最近刚刚尝试将其放入 MS Sql Server 中,视图脚手架添加得很好,没有错误 - 所以我不确定它是否是我的 MySql 数据库或连接字符串或什么......让我发疯......

其他参考资料

似乎其他人也遇到了与我相同的问题 - 唯一的区别是他们正在使用 sql server - 我尝试调整我的所有代码以遵循以下建议这个 stackoverflow 问题/答案在这里 https://stackoverflow.com/questions/12172074/add-controller-in-mvc4-not-working但仍然无济于事

可能修复???

所以这很奇怪...将其连接到 MS Sql Server 并添加控制器,然后将连接字符串恢复到 MySql 后,它实际上正在与 MySql 一起工作...到底是什么!?

因此,当您尝试添加控制器和视图脚手架(这是正确的短语吗?)时,它与 mysql 连接字符串一起添加,但它失败了...但是,如果您将其连接到 sql server 数据库,则生成脚手架/controller,然后恢复到 mysql 连接字符串,它可以工作......?!?!


看来 MVC4 控制器脚手架无法正确识别 MySql 连接字符串。为控制器生成 EF CRUD 代码时,更改连接字符串,如下所示:

<connectionStrings>
    <add name="BTDContext" connectionString="Data Source=host_name;Database=database_name;uid=user_id;pwd=password;" providerName="System.Data.SqlClient" /> 
</connectionStrings>

运行应用程序时将其更改回标准:

<connectionStrings>
    <add name="BTDContext" connectionString="Data Source=host_name;Database=database_name;uid=user_id;pwd=password;" providerName="MySql.Data.MySqlClient" /> 
</connectionStrings>

请注意提供商名称的更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法检索元数据 的相关文章

  • 如何在 MariaDB 10 中启用大索引?

    在 Debian Jessie 中 我安装了 MariaDB 服务器 10 0 30 并尝试增加最大密钥长度 AFAIU 这取决于配置参数innodb large prefix正在启用 根据docs https mariadb com kb
  • 如何在日历中选择多个日期并将其显示在标签中

    假设我有日历 并且我想选择多个日期并在标签中显示 我使用了以下代码 但它无法正常工作 请更正 lblMultipleDate Text Calendar1 SelectedDates 0 ToShortDateString Label2 T
  • 数据库优先方法和修改数据库模式

    我正在使用数据库优先方法使用实体框架 DbContext 构建 ASP NET MVC Web 应用程序 如果在某些情况下我需要修改数据库 例如添加新表或修改现有表 添加列或更改列数据类型 我应该 删除现有实体 edmx 和 tt 文件夹并
  • MySQL 错误 1290 (HY000) --secure-file-priv 选项

    我试图在我的脚本中使用以下代码将 MySQL 脚本的结果写入文本文件 SELECT p title p content c name FROM post p LEFT JOIN category c ON p category id c i
  • 为什么 DropDownList.SelectedValue 依赖于 viewstate?

    如果我在我的页面上设置 EnableViewState true ViewStateMode Disabled 然后 页面的视图状态被禁用 除非覆盖 然后 尝试读取 假设控件已在上次转储到屏幕时填充并选择了一个值 MyDDL Selecte
  • 如何在MVC中获取控制器中的下拉值

    我使用递归函数使用字符串列表绑定下拉列表我的下拉菜单具有类似的值 家 首页 gt gt 厨房 首页 gt gt 厨房 gt gt ABC 我想在数据库中使用相同的下拉值 ABC 这是我的查看代码 ViewBag Title Createne
  • 日期选择器无法与更新面板一起使用

    我的应用程序位于 asp net 3 5 中 其中我从更新面板内的日期选择器中选择日期 选择日期并单击提交按钮后 页面将被回发 发回后 当我再次尝试选择日期时 我看不到日期选择器 aspx页面上的代码
  • OpenXML - 保护所有工作表

    我只能保护一张工作表 但是当我尝试保护 Excel 文档中的所有工作表时 我在尝试附加 SheetProtection 时收到错误 如果我理解正确 我必须在 SheetData 之后附加 SheetProtection 这是我的代码 She
  • 在本地计算机中使用 Azure 存储模拟器时找不到上传的图像

    asp net 4 5 Web 表单 vs2013 身份 2 0 实体框架 6 0 我计划使用 Azure 存储 blob 来存储用户上传的图像 因此 我下载了 Azure 存储模拟器来在本地计算机上进行测试 看来容器已正确创建并且图像已正
  • 需要有关使用 PHP 在 mysql 数据库中插入逗号分隔数据的帮助

    数据库表中已有的演示数据 INSERT INTO csvtbl ID SKU Product Name Model Make Year From Year To VALUES 1 C2AZ 3B584 AR Power Steering P
  • PHP 中的异步数据库/服务调用:Gearman 与 pthreads

    在我们的 LAMP 站点上 我们遇到一些服务必须多次调用数据库才能提取数据的问题 通常在 PHP 中完成此操作的方式 至少我的经验 是串行的 这显然是低效的 我们可以通过使用缓存和聚合一些查询来缓解一些低效率的问题 但在某些情况下我们仍然需
  • MVC3数据缓存技术

    我有一个 sql 查询 存储过程 在结果显示在网络网格中之前需要大约 8 10 秒才能返回 关于 asp net mvc3 中的缓存的性能最佳实践是什么 以便用户不必每次都花费 8 10 秒来加载该数据 减少优化查询 你可以使用内存缓存 h
  • MySql 查询在选择中将 NULL 替换为空字符串

    如何用空字符串替换 select 中的 NULL 值 输出 NULL 值看起来不太专业 这是非常不寻常的 根据我的语法 我希望它能够工作 我希望能得到一个解释 为什么没有 select CASE prereq WHEN prereq IS
  • 从异步方法同步调用 CPU 密集型方法的混乱

    我正在尝试 NET 4 5 的 async await 结构 我正在开发 RESTful Web API 解决方案 我试图弄清楚如何处理 CPU 绑定操作 1 从当前线程同步调用它 或 2 使用Task Run 让我们使用这个例子page
  • 如何使用 PHP 从 MySQL 查询中按升序对值进行排序?

    我使用以下 PHP 脚本从 MySQL 表中获取和更改数据 并将结果打印在 HTML 表中 我希望按升序对数据进行排序 utilization percentage变量 它是由创建的 total client time total avai
  • 在mysql中搜索“SanF”时获取旧金山的记录

    当我搜索 SanF 时获得 San Francisco 记录 SELECT FROM table WHERE col LIKE san Works SELECT FROM table WHERE col LIKE san F Works S
  • Membership.ValidateUser() 的目的是什么

    我一直在学习有关MembershipProvider类 我认为Membership ValidateUser 方法应该用于登录用户 然而我刚刚了解到有一个FormsAuthentication Authenticate 目的是什么Valid
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • DbContext.SaveChangesAsync 异常处理

    当搭建新的脚手架时ApiController通过 Visual Studio 2013 中的异步操作和实体框架支持 某些方法可以包装DbContext SaveChangesAsync https msdn microsoft com en
  • SQL 大表中的随机行(使用 where 子句)

    我有一个网站 人们可以在其中对汽车进行投票 向用户展示 4 辆汽车 他 她可以投票选出他们最喜欢的汽车 桌子cars有重要的列 car id int 10 not auto increment so has gaps views int 7

随机推荐