看了一堆视频教程后,感觉基本了解的差不多了,可以动手.....因为最好的学习方法就是实践嘛....

所以打算从网站做起,在WebForm和MVC之间选了MVC,因为感觉高大上...也比较灵活

于是买了两本书《ASP.NET MVC 4高级编程(第4版)》和《ASP.NET MVC 4 Web编程》,在群里有群友问,为什么要买两本...其实这是习惯啦...对于初学者来说,最先要了解的就是,这个东西大概是个什么东西....书的作者不同,介绍的侧重点也不同,买两本就为了互补一下...

mvc也大概看了一下,至少基本的控制器,试图啊,还有整个的流程都了解的差不多,准备动手了....

先说说在选择数据库访问技术上遇到的问题.....

看的教程,基本上数据库都是用EF来做的...于是也跟着用了微软官方出品高大上的Entity Framework....

Codefirst神马的太遥远,于是先打开sqlserver建库,然后写model...然后兴高采烈的就开始了...

然后不出意外的就遇到问题了

1.在深入理解完全面向对象的数据库设计方法之前,思路还是局限在sql时代(毕竟写了很多年的sql语句),这就直接导致了数据库表和Model设计的不合理

于是就有了下面的Model (省略了部分无关字段)

菜单ID,父菜单ID,菜单名字,父菜单名字......

使用的时候根据ParentCode获取到父菜单的MenuName 填充到 ParentName

    public class Menu
{
[Key]
public int MenuCode{ get; set; }
public int ParentCode { get; set; }
public string MenuName { get; set; }
[NotMapped]
public string ParentName { get; set; }

于是就有了这段 自连接(自己Join自己) 查询代码....

            var query = from a in DB.Menus
join b in DB.Menus
on a.ParentCode equals b.MenuCode into lg
from b in lg.DefaultIfEmpty()
select new SDOU.Models.Staff.Menu
{
MenuCode =a.MenuCode ,
MenuName =a.MenuName,
ParentCode =a.ParentCode ,
ParentName = b == null ? "" : b.MenuName };

啪嚓一运行,问题又来了....

我的Model明明是放在 Models.Staff.Menu ,运行的时候 EF非要给我整到DAL的命名空间下,然后告诉我无法关联实体还是什么的....总之就是自动给我把命名空间给换了.....

对于新手的我,在百度谷歌捣鼓半天也没解决问题...

后台求助大神,大神曰,你这一看就知道有问题,不是EF的问题,而是你自己的思路问题....这是在拿着EF写SQL.......(其实我想说,那当然了,我只会sql嘛).....然后大神又说,初学者如果没有面向对象的设计思想,就老老实实回去用sql吧....

既然大神的指点了,我也不去纠结到底是哪里的问题了,就算把这个命名空间问题搞定,以后用EF肯定还会遇到更多问题....这种自己连接自己的简单查询都搞不定,以后那些横跨多个表的复杂查询就更不用说了....

于是乎各方求助,百度谷歌一番知道了几个轻量级的微型ORM框架... PetaPoco,Dapper,FluentData,DataRabbit这几个推荐的比较多,有时候没有选择还好,拿来就用了,但有选择的时候反而会更加难下决定....

于是乎,就有了这个博问   http://q.cnblogs.com/q/65659/  让大神们帮我做个选择....

最后的结果就是弃用EF,启用Dapper

最新文章

  1. UAT SIT QAS DEV PET
  2. PHP的学习--cookie和session--来自copy_02
  3. java内存分析
  4. PLSQL_基础系列03_合并操作UNION / UNION ALL / MINUS / INTERSET(案例)
  5. DBA_Oracle PFile and SPFile文件的管理和使用(案例)
  6. loadrunner破解
  7. git大百科
  8. 数据库mysql的基本命令
  9. 零基础编程指南(By Turtle)
  10. python中那些双下划线开头得函数和变量--转载
  11. 《Algorithms 4th Edition》读书笔记——3.1 符号表(Elementary Symbol Tables)-Ⅱ
  12. 迟来SQLHelper
  13. 【Visual C++】绘图函数BitBlt的使用方法
  14. C# DateTime结构的常用方法
  15. JDBC-ODBC桥连接方式操纵SQL数据库
  16. 使用assets目录来实现插件机制
  17. python每天一个小练习-强壮的密码
  18. 关于ORACLE的各种操作~持续汇总~
  19. 【重学计算机】机组D4章:存储系统
  20. 【Solidity】学习(2)

热门文章

  1. entityframework学习笔记--003-使用model first
  2. 浏览器history对象
  3. Java语言面向对象的一些基本特点
  4. Dynamics XRM Tools 2015 2016
  5. 另类的SQL注入方法
  6. Android 更新UI的几种方式
  7. IOS RunLoop浅析 三
  8. INITIAL参数设置导致TRUNCATE TABLE不能降低高水位线案例
  9. DPA 9.1.85 升级到DPA 10.0.352流程
  10. 实时事件统计项目:优化flume:用file channel代替mem channel