我正在设置上面的配置..这里是我的类:
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连接字符串它的工作原理….?!?
解决方法
<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>
注意更改,提供商名称。