加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 无法检索元数据

发布时间:2020-12-16 00:30:15 所属栏目:asp.Net 来源:网络整理
导读:MVC4实体框架4.4 MySql POCO /代码优先 我正在设置上面的配置..这里是我的类: namespace BTD.DataContext{public class BTDContext : DbContext{ public BTDContext() : base("name=BTDContext") { } protected override void OnModelCreating(DbModelBuild
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>

>数据库AND表已存在…
>我还是很新的mvc,但正在使用this tutorial

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

Unable to retrieve metadata for BTD.Data.Product using the same
DbCompiledModel to create context against different types of database
servers is not supported. Instead,create a separate DbCompiledModel
for each type of server being used.

我完全失去了 – 我已经在谷歌几乎每个不同的变化的错误信息上面我可以想到,但无济于事。

这是我可以验证的东西…

> MySql正常工作
>我使用MySql连接器版本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>

我已经在这个bug上工作了几天 – 现在我已经到了这一点,我愿意付钱给别人解决它。没有笑话…我真的很喜欢使用MVC 4和Razor – 我很高兴开始这个,但是现在我很气馁 – 我非常感谢任何帮助/指导!

还要注意 – 我正在使用来自Nuget的Entityframework …

另一个注意

我正在使用默认的可视化工作室模板,通过帐户页面和其他内容创建您的MVC项目。我已经删除了对所添加文件的所有引用,因为他们试图使用不存在的“DefaultConnection” – 所以我认为这些文件可能是导致错误的原因 – 但删除后仍然没有运气 –

我只想让大家知道我正在使用可视化工作室MVC项目模板,该模板预先创建一堆文件。我将尝试从一个没有这些文件的空白MVC项目重新创建这一切 – 我会更新一次,一旦我测试

更新使用VS MVC基本模板:相同的错误导致 – 仍然没有解决方案

另外一个经历同样问题的人

Right here is another stackoverflow question that mimics mine – 但是我尝试解决方案无济于事 – 也许有同样问题的人可以从链接中受益

UPDATE

我最近刚刚尝试把它放到MS Sql Server中,视图脚手架增加了罚款,没有错误 – 所以我不知道是否我的MySql数据库或连接字符串或什么…驱动我坚果

其他参考

看来别人也有同样的问题我唯一的区别是他们正在使用sql server – 我尝试调整我的所有代码遵循this stackoverflow question/answer here的建议,但仍然无济于事

可能的固定?

所以这是奇怪的…在挂接到MS Sql Server并添加控制器后,然后将连接字符串还原到MySql它实际上是使用MySql …什么样的!

所以似乎当你尝试添加你的控制器和视图脚手架(是正确的短语?)被添加与mysql连接字符串它失败…但是如果你挂接到一个sql server数据库,生成脚手架/ controller,然后恢复到mysql连接字符串它的工作原理….?!?

解决方法

似乎MVC4控制台脚手架没有正确识别MySql Connection String。为控制器生成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>

注意更改,提供商名称。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读