码迷,mamicode.com
首页 > Web开发 > 详细

asp.net mvc4 MvcMusicStore

时间:2014-06-09 14:05:27      阅读:437      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

最近危机感紧迫,总想学些东西。又因为之前mvc的知识不够系统和牢固,所以最近想系统的过一遍。自然买了两本书来看,一边看一边对比。尽量做到每个地方都过一下。今天遇到一个问题所以记一下博客。

环境:win7 之前安装了vs2010sp1 ,mvc4.昨天安装了vs2012.

项目环境:vs2012 +iisexpress mvc4 empty project。 sqlserver compact 本地数据库

项目基础:MvcMusicStore url:http://mvcmusicstore.codeplex.com.   

当用nuget添加entity framwork 的时候是最新的版本6.

bubuko.com,布布扣

 

添加controler的时候会报MVC 基架不支持Entity Framework 6或更高版本。

无奈用nuget卸载Entity Framework 6

后面用PM命令添加了5.0版本(PM> Install-Package EntityFramework -Version 5.0.0)。bubuko.com,布布扣

重新添加controler

bubuko.com,布布扣

无法检索  元数据 using the same dbconpiledmodel to create contexts against different types of database servers is notsupported.instead,create a separate dbcompiledmodel for each type of server beging used

大概意思就是不同的数据库需要用不同的数据模型上下文来支持。

网上搜索了很多文章http://stackoverflow.com/questions/12323307/error-when-creating-a-controller-in-visual-studio-2012

http://msdn.microsoft.com/zh-cn/data/jj592674.aspx

http://stackoverflow.com/questions/12410673/using-the-same-dbcompiledmodel-to-create-contexts-against-different-types-of-dat

对这个问题有帮助的就是这三个连接提供的方法。

第一不用sqlserver compact 改为用sqlserver 

  <connectionStrings>
    <!--<add name="MusicStoreEntities" connectionString="Data Source=|DataDirectory|\MvcMusicStore.sdf" providerName="System.Data.SqlServerCe.4.0" />-->
    <add name="MusicStoreEntities" connectionString="Data Source=.;Initial Catalog=MvcMusicStore;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

第二种是在数据上下文声明的时候显式生命构造函数并且用"DefaultConnection"作为参数。更具msdn上说明的code first模式,初始化时自动构建数据库。

 

bubuko.com,布布扣
using System.Data.Entity;

namespace MvcMusicStore.Models
{
    public class MusicStoreEntities:DbContext
    {
        public MusicStoreEntities()
            : base("DefaultConnection")
        {

        }
        public DbSet<Album> Albums { get; set; }
        public DbSet<Genre> Genres { get; set; }
        public DbSet<Artist> Artists { get; set; }
    }
}
bubuko.com,布布扣

 

上面两种方式都能解决问题。至于原因我上网搜索了基本没有说清楚的。个人猜测可能是基架生成代码的时候会通过数据上下文(DbContext)去读取模型对应的属性而他默认是采用sqlserver的连接,但是上下文对应的连接时用的sqlserver conpact 本地数据库的连接。导致两种数据库冲突。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

之前还遇到一个问题提示

unable to cast object of type ‘System.Data.Entity.Core.Objects.ObjectContext‘ to type ‘System.Data.Objects.ObjectContext‘

解决的过程很曲折,反正一句话就是不但查资料,不断尝试,最终解决问题的方式是卸载ef6,sqlserver compact组件,安装ef5,干掉webconfig中的ef对象工厂的配置。

 

这个问题困扰了我一天半的时间,中途想过放弃,但是一狠心有继续查资料解决,再次说明了一个问题,坚持很重要。

还有就是想说国外的环境确实要好一点,这两个问题都是国外资料有用,国内的几乎没有这类问题的解决办法。所以又这篇文章的诞生。

如果遇到类似问题欢迎探讨,不喜勿喷,有错欢迎帮我指正。qq:513439252

 

 

 

 

 

 

 

asp.net mvc4 MvcMusicStore,布布扣,bubuko.com

asp.net mvc4 MvcMusicStore

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/chenying/p/3776721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!