微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – 无法检索元数据

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>

注意更改,提供商名称

原文地址:https://www.jb51.cc/aspnet/252437.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐