今天在部署一个经典三层的项目的时候,用到了EntityFramework,碰到几个问题:

在用EntityFramework将数据库导入到DAL层后,在BL层引用该DAL后,在测试项目的时候,想要查询一个表的结果集,但是发现没有平常熟悉的智能提示,我习惯用ToList(),但是这次只能提示没有出现,我以为是因为dll引用的关系,就自己手写了,但是却给我抛出了三个错误:

Error    1    The type 'System.Data.Entity.DbContext' is defined in an assembly that is not referenced. You must add a reference to assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.    F:\Projects\Entity Framework\BL\Order.cs    13    13    BL
Error 2 The type 'System.Data.Entity.DbSet`1<T0>' is defined in an assembly that is not referenced. You must add a reference to assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. F:\Projects\Entity Framework\BL\Order.cs 15 13 BL
Error 3 'System.Data.Entity.DbSet`1<DAL.Order>' does not contain a definition for 'ToList' and no extension method 'ToList' accepting a first argument of type 'System.Data.Entity.DbSet`1<DAL.Order>' could be found (are you missing a using directive or an assembly reference?) F:\Projects\Entity Framework\BL\Order.cs 15 20 BL

根据提供的信息,发现需要再次引用EntityFramework.dll,去BL的bin目录下查看,发现确实没有EF.dll。然后添加EF.dll到bin下,再次编译就通过了,智能提示也有了。

然后在此运行项目,但是又给报了个错误:

Additional information: No connection string named 'DataBaseFirstDBEntities' could be found in the application config file.

根据提示去DAL的config文件找这个connection string,发现是有的,和构造函数里的那个需要的名称是一样的,感到非常奇怪。怀疑是DAL层的模型可能有问题,就将查询数据库的跨点缩小,在UI层随便call一个BL的方法,让这个方法去驱动DL层里的一个用来测试的方法,这个方法直接实例化一个context对象,然后查询一个表。发现得到了想要的结果。比较两次运行的不同,第一次是在BL层里实例化化了context,然后查询数据库,再根据提示的错误信息,想到可能在BL层里也需要在config文件里配置连接字符串,然后就copy了DAL的字符串到BL,再次运行程序,得到了预期的结果。

网上查了下,发现这个问题还是比较常见的,配置文件在添加引用的时候,是不会被添加到目标项目的。但是为什么在BL层里实例化需要BL层的配置信息就不是很清楚了。有机会需要去了解下。

[EF] - 作为DAL层遇到的问题的更多相关文章

  1. MVC项目实践,在三层架构下实现SportsStore-01,EF Code First建模、DAL层等

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(58)-DAL层重构

    系列目录 前言:这是对本文系统一次重要的革新,很久就想要重构数据访问层了,数据访问层重复代码太多.主要集中增删该查每个模块都有,所以本次是为封装相同接口方法 如果你想了解怎么重构普通的接口DAL层请查 ...

  3. asp.net mvc 简单项目框架的搭建过程(一)对Bll层和Dal层进行充分解耦

    学习asp.net 已经有近三个月的时间了,在asp.net mvc上花的时间最多,但个人真是有些菜,不得不说,asp.net mvc的水真的还是蛮深的.目前在公司实习,也见过公司几个项目的代码了.对 ...

  4. EF 通用数据层类

    EF 通用数据层父类方法小结 转载:http://www.cnblogs.com/yq-Hua/p/4165344.html MSSql 数据库 数据层 父类 增删改查: using System; ...

  5. 动态创建DAL层类的实例

    为了可扩展性,方便以后对于代码的修改维护,使用动态创建DAL层对象. 1.首先在webconfig中的configuration下添加配置项 <appSettings> <add k ...

  6. 数据库中int类型存在空数据开发过程中model和dal层处理方法

    model层 public Int32? IsFullAttendance { get; set; } dal层  if (dr["IsFullAttendance"] + &qu ...

  7. DAL层与BLL层的设计原则

    通用DAL层: 提供一个通用的DAL层的基础框架,其中包括所有实体类的基类,所有DAL类的基类,以及用来在实体类和数据表以及实体类字段和数据表字段之间Mapping的Attributes.此层作为核心 ...

  8. MyFramework框架搭建(一)DAL层

    一直以来有一个想法,搭建一个属于自己的框架,将自己学到的东西整合到框架里,不断的完善,让它随着我的成长而成长,下面介绍我第一阶段的总结:DAL层搭建 一.基础配置 1.我用的是Ibatis.net框架 ...

  9. [置顶] 自己写代码生成器之生成Dal层代码(获取数据库所有表名称)

    自己写代码生成器之生成Dal层代码(获取数据库所有表名称) --得到数据库birthday所有表名称 select name from sysobjects where [type]='U' --se ...

随机推荐

  1. acm 易错警示

    1:建图注意是有向图还是无向图,无向开两倍数组 2:看题注意是否为多组输入,多组输入注意初始化. 3:减法取模一定要注意 4:stl中.size()为unsigned如果要计算注意强制类型转换(int ...

  2. Java基础教程——UDP编程

    UDP:User Datagram Protocol,用户数据报协议 服务端: import java.net.*; import java.io.*; public class UdpServer ...

  3. Potato家族本地提权分析

    原文来自SecIN社区-作者:Zeva 0x00 前言 在实际渗透中,我们用到最多的就是Potato家族的提权.本文着重研究Potato家族的提权原理以及本地提权细节 0x01 原理讲解 1.利用Po ...

  4. react高阶组件的一些运用

    今天学习了react高阶组件,刚接触react学习起来还是比较困难,和大家分享一下今天学习的知识吧,另外缺少的地方欢迎补充哈哈 高阶组件(Higher Order Components,简称:HOC) ...

  5. 【NOIP2015模拟11.2晚】JZOJ8月4日提高组T2 我的天

    [NOIP2015模拟11.2晚]JZOJ8月4日提高组T2 我的天 题目 很久很以前,有一个古老的村庄--xiba村,村子里生活着n+1个村民,但由于历届村长恐怖而且黑暗的魔法统治下,村民们各自过着 ...

  6. intelliJ IDEA 鼠标光标消失问题

    经常会遇到,光标就莫名消失了,得重启 IntelliJ IDEA 才行,到官方论坛询问才得知,系统时间如果被调前就会发生这个情况,我想原因是之前的破解是用的调系统时间的方式,所以留下了这个bug,总之 ...

  7. PyQt(Python+Qt)学习随笔:QToolBox工具箱currentItem对应的index、text、name、icon、ToolTip属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在Designer中,toolBox主要有如下属性: 可以看到,toolBox的属性主要是与当前项相 ...

  8. PyQt(Python+Qt)学习随笔:QTreeView树形视图的itemsExpandable属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTreeView树形视图的itemsExpandable属性用于控制视图中用户是否可以通过操作展开 ...

  9. Python学习随笔:获取当前主机名和用户名的方法

    在Python中,要获取当前主机的主机名和登录用户名很简单: 使用os.getlogin():返回当前登录用户名 使用socket.gethostname():返回当前机器主机名 代码如下: > ...

  10. OA公文流转系统(未完成)

    基本页面比较多,所以就不贴出来了,具体的页面可以自行浏览. 点我进入OA系统浏览界面(未做响应式布局,需电脑端打开) 账号密码: 部门:bumen------bumen 办公室:bangongshi- ...