哎。。。我感觉我是不是命中就旺bug啊。。。跟着书一路做下去 遇到的bug超级多。。。

书的第三部分是实战 我还没做完 但遇到了不少书上那样做过不去的地方。。这里稍微整理一下。。因为我还没做完 所以可能会有新的bug也说不定

书上用的是VS2012 我用的是VS2015社区版 生成的空项目和书上的也有出入了。。。


首先 生成空的MVC项目是这样的: enter image description here 选MVC是带有脚手架的。。。所以 不要选
因为书上项目是从零开始的 选了带脚手架的Db啊什么的都已经有了 会带来不少麻烦。。。


View里遇到诡异的DisplayNameFor DisplayFor报错

The type 'Expression<>' is defined in an assembly that is not referenced.You must add a reference to assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.  

这个错居然不影响build
爆栈网上: http://stackoverflow.com/questions/31086850/the-type-expression-is-defined-in-an-assembly-that-is-not-referenced

解决方法很简单,在最外面那个Web.config(View里也带了一个)里补上这个内容: enter image description here


增加 @Scripts.Render提示找不到Scripts
这个很坑。。因为书上完全没提Optimization那个依赖....但是空项目默认是没有那个依赖的。。。
可能是因为VS版本不同吧...
解决方法很简单 http://www.cnblogs.com/qixue/p/3635239.html
nuget安装一下这个依赖

Install-Package Microsoft.AspNet.Web.Optimization  

然后在view目录下的web.config中增加这个
enter image description here
然后就可以用了...


关于Entity Framework
这个在作者用的VS中和VS2015中差异比较大
在第二章说的自动更新的方法已经不能用了... 而且空项目里是没有EF的!! 你就算引入System.Data.Entity 也找不到DbSetDbContext!!!!!
正确的做法是先用nuget安装EF

Install-Package EntityFramework  

安装好之后

Enable-Migrations  

启用迁移

Add-Migration init  // init是说明 就当作commit里的信息来用好了

第一次初始化的

Update-Database  

应用到数据库

然后每一次,哦,对了 Update后面可以加版本 可以滚来滚去(版本就是init 你指定的名字)
每次修改Model要应用到数据库的话都要先Add 再Update 当然也是有auto的方法的 不过和书上的不一样 书上的已经用不了了。。。

顺便说一下 按照书上写连接字符串的话 好像默认的localdb不是书上的名字了 所以可能会连接不了(数据库没有被建立) 比如我的 我后来改了下连接字符串:

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\ShoppingDB;AttachDbFilename=|DataDirectory|\aspnet-MvcShopping-20151108051917.mdf;Initial Catalog=aspnet-MvcShoppin-20151108051917;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>  

ShoppingDB是不存在的,所以要预先建立
sqllocaldb就可以了

sqllocaldb create ShoppingDB  

这样就建好了 顺便一提 localdb的文件路径在: C:\Users\<user>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances

哎...真的感觉自己挺惨的。。
每次看书,按书上说的做,都是一片惨红,都要打开浏览器去找解决方式。。。。
顺便一提bing的in english搜索感觉和用谷歌差不多。。在用bing的时候推荐点一下看那个的结果。。。。

哎。。。