BLL层里的“未将对象引用设置到对象的实例”,急!!

灰太狼已不再单身 2009-04-18 11:57:27
是用的工程模式

下面是DALFactory的类

public class DataAccess
{
private static readonly string path = ConfigurationSettings.AppSettings["WebDAL"].ToString();

public static IUser CreatUserDAL()
{
string classname = path + ".UserDAL";
return (IUser)Assembly.Load(path).CreateInstance(classname);
}


}

下面是BLL层里面的方法

private static readonly IUser userDAL = DataAccess.CreatUserDAL();

public static User GetUserByUserName(string userName)
{
return userDAL.GetUserByUserName(userName);
}


下面是DAL里面的方法

public User GetUserByUserName(string userName)
{

SqlParameter parm = new SqlParameter("@userName", SqlDbType.VarChar,50);
parm.Value = userName;
using (SqlDataReader sqlread = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, strGetUserByUserName, parm))
{
if (sqlread.Read())
{
User user = new User();
user.UserId = int.Parse(sqlread["userId"].ToString());
user.UserName =Convert.ToString(sqlread["userName"]);
user.UserPassword = sqlread["userPassword"].ToString();
user.UserState = sqlread["userState"].ToString();

sqlread.Close();

return user;
}
else
{
sqlread.Close();
return null;
}
}

}

下面是页面调用

else if (UserBLL.GetUserByUserName(this.txtUserName.Text.ToString().Trim()) != null)
{
Response.Write("<script>alert('此用户已存在,请更换用户名!')</script>");
}
...全文
497 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
deng_yuxi 2011-07-26
  • 打赏
  • 举报
回复
我也出这个问题了?
  • 打赏
  • 举报
回复
我也遇到了这个问题,我也忙乎了半天

我的问题是我原来没用数据工厂,只有数据层,但是我把原来的数据层更改为工厂模式后,生成网站,SQLServerDAL这个项目生成的dll文件不能自动编译到网站的bin目录里,只能手动复制过去。

因为我更行了SQLServerDAL,没有复制到bin目录里,报这个错误。

我也不知道啥原因。
  • 打赏
  • 举报
回复

public IList<User> GetAllUser()
{
IList<User> list = new List<User>();

using (SqlDataReader sqlread = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, strGetAllUser,null))
{
while (sqlread.Read())
{
User user = new User();

user.UserId = (int)sqlread["userId"];
user.UserName = (string)sqlread["userName"];
user.UserPassword = (string)sqlread["userPassword"];
user.UserState = (string)sqlread["userState"];

list.Add(user);
}

}
return list;
}
  • 打赏
  • 举报
回复

<connectionStrings>
<add name="ChatRoomConnectionString" connectionString="Data Source=.;Initial Catalog=ChatRoom;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="SQLConnString1" value="server=.;User Id=sa;password=123456;database=ChatRoom"/>
<add key="WebDAL" value="DALSqlServer"/>
</appSettings>

看看我的web.config设置有没问题,我那个问题解决了,但是读不出来数据,页面空白、

还有,SqlDataReader 可以读取IList()类型的数据流嘛?
uxspy 2009-04-20
  • 打赏
  • 举报
回复
很简单,
private static readonly IUser userDAL = DataAccess.CreatUserDAL();

你的userDAL一定是null
异常详细信息: System.IO.FileNotFoundException: 未能加载文件或程序集“ChatRoom.DALSqlServer”或它的某一个依赖项。系统找不到指定的文件。

已经说了,系统找不到指定文件,你的ChatRoom.DALSqlServer程序集没有加载进来,如果你是在同一个解决方案下
看看你的解决方案下有没有程序集名称为ChatRoom.DALSqlServer的项目,或者,在BLL引用里有没有ChatRoom.DALSqlServer.dll
delphi_new 2009-04-20
  • 打赏
  • 举报
回复
没有创建实例,跟下OKliao
程序漫步 2009-04-20
  • 打赏
  • 举报
回复
自己 调试 下 不就OK了 吗 ~~~
Jelindu 2009-04-20
  • 打赏
  • 举报
回复
估计配置文件里 没有写好对应的sqlDALSqlServer
  • 打赏
  • 举报
回复

未能加载文件或程序集“ChatRoom.DALSqlServer”或它的某一个依赖项。系统找不到指定的文件。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.IO.FileNotFoundException: 未能加载文件或程序集“ChatRoom.DALSqlServer”或它的某一个依赖项。系统找不到指定的文件。

源错误:


行 16: {
行 17: string classname = path + ".UserDAL";
行 18: return (IUser)Assembly.Load(path).CreateInstance(classname);
行 19: }
行 20:


  • 打赏
  • 举报
回复
[code=C#]
<connectionStrings>
<add name="ChatRoomConnectionString" connectionString="Data Source=.;Initial Catalog=ChatRoom;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="SQLConnString1" value="server=.;uid=sa;pwd=123456;database=ChatRoom"/>
<add key="WebDAL" value="DALSqlServer"/>
</appSettings>
[code]

大家看看我的web.config里面有没问题,我好像数据库没连接上
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 Lxpd 的回复:]
private static readonly IUser userDAL = DataAccess.CreatUserDAL();
这块就出错了,
这个方法没生成Dal的实例,如果你用的是petshop架构,看看你的类工厂反射的DAL代码是否正确,,
[/Quote]

我就是觉得没有生产DAL的实例……

但是我和petshop对比了的,都是一样的哦,和我 下载的别人的项目也是一样的,但是就是要出问题
Lxpd 2009-04-20
  • 打赏
  • 举报
回复
private static readonly IUser userDAL = DataAccess.CreatUserDAL();
这块就出错了,
这个方法没生成Dal的实例,如果你用的是petshop架构,看看你的类工厂反射的DAL代码是否正确,,
  • 打赏
  • 举报
回复
现在数据库没有连上,数据库的设置和参数那些都是正确的。

你们看看是不是web.config设置有问题,还有就是看看这个方法

public class DataAccess
{
private static readonly string path = ConfigurationSettings.AppSettings["WebDAL"].ToString();

public static IUser CreatUserDAL()
{
string classname = path + ".UserDAL";
return (IUser)Assembly.Load(path).CreateInstance(classname);
}


}


解释一下 ".UserDAL"; 是什么意思。需要我贴什么东西出来说就是
  • 打赏
  • 举报
回复

<asp:GridView ID="GridView1" runat="server" PageSize="5" AllowPaging="True" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1">
<Columns>
<asp:BoundField DataField="UserId" HeaderText="用户编号" SortExpression="UserId" />
<asp:BoundField DataField="UserName" HeaderText="用户名" SortExpression="UserName" />
<asp:BoundField DataField="UserPassword" HeaderText="密码" SortExpression="UserPassword" />
<asp:BoundField DataField="UserState" HeaderText="会员等级" SortExpression="UserState" />
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="ChatRoom.Model.User"
DeleteMethod="DeleteUserById" SelectMethod="GetAllUser" TypeName="ChatRoom.BLL.UserBLL"
UpdateMethod="UpdateUser">
<DeleteParameters>
<asp:Parameter Name="userId" Type="Int32" />
</DeleteParameters>
</asp:ObjectDataSource>
</div>


我只是用一个gridview来做实验,看能读出来不,但是现在是读不出数据,页面是一片空白,数据库里是有一行数据的
满衣兄 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 uxspy 的回复:]
引用 25 楼 yfqvip 的回复:
这个问题很多人经常提问。
原因:没有理解三层里各个DLL之间的引用关系。
解决办法:UI层需要这个项目里的所有DLL,即:要添加所有DLL的引用,通常是漏加了引用。检查一下,这种可能性最大。
还有一种可能,是引用没有及时更新,重新添加引用即可。

to:yfqvip,我觉得他不是忘记添加引用,忘记添加引用直接报错了
要看他怎么处理XXlist的返回了,是返的null吗,如果是的话,如果他不做nu…
[/Quote]
可能是我没说清楚,我指的是所有的DLL,有的DLL是在其它DLL里被使用的,而在UI里没被使用,这个时候如果漏了DLL编译不报错,运行就报这个错。

UI里要添加所有的DLL。
uxspy 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 yfqvip 的回复:]
这个问题很多人经常提问。
原因:没有理解三层里各个DLL之间的引用关系。
解决办法:UI层需要这个项目里的所有DLL,即:要添加所有DLL的引用,通常是漏加了引用。检查一下,这种可能性最大。
还有一种可能,是引用没有及时更新,重新添加引用即可。
[/Quote]
to:yfqvip,我觉得他不是忘记添加引用,忘记添加引用直接报错了
要看他怎么处理XXlist的返回了,是返的null吗,如果是的话,如果他不做null判断,foreach的时候一定也出错
所以,
to:lz,把你页面的输出语句弄出来瞅瞅
uxspy 2009-04-20
  • 打赏
  • 举报
回复
你的web.config没有问题,读不出来你自己追下看看啊,怎么老是不追着调试呢,你看看sqlread的hasrows是否是true
yji1982 2009-04-20
  • 打赏
  • 举报
回复
可能是返回了null
满衣兄 2009-04-20
  • 打赏
  • 举报
回复
这个问题很多人经常提问。
原因:没有理解三层里各个DLL之间的引用关系。
解决办法:UI层需要这个项目里的所有DLL,即:要添加所有DLL的引用,通常是漏加了引用。检查一下,这种可能性最大。
还有一种可能,是引用没有及时更新,重新添加引用即可。
fangyuan303687320 2009-04-19
  • 打赏
  • 举报
回复
lz可以在调试的时候加上一个判断语句看看
public static User GetUserByUserName(string userName)
{


If(userDAL!=null)
{
return userDAL.GetUserByUserName(userName);

}
else
{
//..
}
}
加载更多回复(15)
利用代码生成器搭建Linq系统框架 本文介绍怎么样创建Linq项目框架。其中DAL层使用LinqTo Sql,BLL层使用CodeSimith模板生成实体类。 目的是推进linq技术的使用。 实例demo下载:linqTempDemo 一.CodeSimith生成Linq To Sql文件模板功能介绍 1、生成常用的增、删、改的逻辑方法。其写法与常规写法基本相同。已经经过测试 2、 2、 生成带有分页获取列表的方法,如下图。已经经过测试。 (a) a) 此方法中可自定义动态查询方法。 ( b)方法中准备了排序方法,我们可通过简单的注释一行代码,来实现列表排序功能。 3、针对单独类写了整体缓存方法,可以将数据缓存在BLL层,需要的可调用;缓存需要根据具体需求使用或改进。 二、二、 CodeSimith模板使用方法 1 1、此模版为CodeSimith模板,使用方法自然和其他方法一样,只需要按照你习惯了的CodeSimith成才 方法就可以; 2、其中引用的Linq自动生产类.dbml需要命名为LinqToSql.dbml; 三、三、 Linq项目架构的搭建 1、 1、 按照公司一般要求创建三层架构:项目名称如下图: 2、 2、项目引用关系: 3、 3、DAL层新建linqdbml文件。 (a) a)此处创建的LinqToSql自动生产类.dbml需要命名为LinqToSql.dbml; (b b)在LinqToSql.dbml文件中添加数据库实体映射类,如数据表,视图、存储过程。此处只需打开资 服务器源管理器拖入所需对象即可。 (c)修改LinqToSql.dbml的默认数据库连接字符串 默认连接字符串在AppConfig和Settings.settings中,如下图,我们为方便需要将其修改 为引用Web.Congfig中的数据库连接字符串。 使用时我们只需要上图标红处修改为: public LinqToSqlDataContext () : base(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString, mappingSource) { OnCreated(); } 即可。不要忘记引用所需程序集System.Configuration 4、 4、 用Codesimith模板生成BLL层逻辑代码类: (a) a) 配置Codesimith数据库连接 (b)选择表,生成代码文件 5、将生成的代码类引用在项目中: (a) a) 添加辅助类,如下图: (b) b) 添加程序集引用,如下图: (c)将生成代码文件复制到项目中,如下图: 6 6、自定义方法使用。模版生成类均使用public partial class属性,我们自定义方法不要直接添加到 生成类中 ,需要再添加一个public partial class:在此类文件中添加修改我们的自定义方法。 此时怎么引用BLL中的方法我就不用说了。 利用代码生成器搭建Linq系统框架现在就完成了。
第1章 登录验证模块 1 1.1 开发站点前的配置 1 1.1.1 创建Web站点 1 1.1.2 使用站点安全工具配置身份验证模式 2 1.1.3 配置站点的数据存储方式 4 1.1.4 定制自己的数据存储方式 4 1.2 最普通的登录方式 6 1.2.1 用户注册功能 6 1.2.2 用户的登录功能 7 1.2.3 修改密码功能 8 1.2.4 在登录页面中添加注册导航功能 8 1.2.5 显示登录用户名和用户状态功能 8 1.2.6 根据用户登录身份显示不同效果页功能 9 1.3 基于角色的登录方式 10 1.3.1 在应用程序中启用角色 10 1.3.2 创建角色 10 1.3.3 创建角色访问规则 11 1.3.4 赋予用户角色权限 11 1.3.5 验证角色的登录 12 1.4 匿名用户的授权管理 12 1.5 小结 13 第2章 缓存管理模块 14 2.1 数据库缓存依赖的优点 14 2.2 开始使用缓存 15 2.2.1 开启应用程序的缓存功能 15 2.2.2 配置缓存依赖的数据库 15 2.2.3 为SQL Server启用缓存通知 16 2.3 控件级数据缓存功能 16 2.3.1 添加时间戳和数据 16 2.3.2 观察缓存数据的变化 18 2.4 页面级数据缓存依赖功能 18 2.4.1 配置页面的缓存属性 18 2.4.2 完善模块中两个功能的导航 19 2.5 小结 20 第3章 个性化设置模块 21 3.1 简单类型的个性化设置功能 21 3.1.1 设置个性化的项目 21 3.1.2 配置个性化信息 22 3.1.3 个性化用户登录站点 22 3.1.4 保存个性化设置 22 3.1.5 显示个性化设置 23 3.2 复杂类型的个性化设置功能 23 3.2.1 设计复杂个性化的项目 24 3.2.2 配置复杂项目 25 3.2.3 保存复杂项目的设置 25 3.2.4 获取复杂项目的设置并显示 26 3.3 匿名用户的个性化设置功能 27 3.3.1 启用匿名用户的个人配置属性 28 3.3.2 设计匿名用户的登录功能 28 3.3.3 将匿名用户的个性化设置移植到已验证用户 30 3.4 完善系统对3个功能的导航 31 3.5 小结 31 第4章 投票模块 32 4.1 一个简单的投票系统 32 4.1.1 设计投票功能的数据存储方式 32 4.1.2 投票项目管理功能 33 4.1.3 投票功能 37 4.1.4 图形化显示投票结果功能 38 4.2 防止重复投票技术 40 4.2.1 利用Session对象 40 4.2.2 利用Cookies对象 41 4.2.3 验证IP和登录时间 41 4.2.4 小范围调查 42 4.3 一个完整的投票系统 42 4.3.1 投票系统的功能模块 42 4.3.2 投票系统的数据库架构 43 4.3.3 数据库中数据之间的关系 43 4.3.4 投票主题管理 44 4.3.5 投票项目管理 52 4.3.6 投票功能管理 54 4.3.7 投票系统后台权限管理 59 4.4 小结 60 第5章 RSS模块 61 5.1 RSS的定义 61 5.2 RSS的作用 61 5.3 RSS的订阅原理 62 5.3.1 RSS的工作原理 62 5.3.2 RSS订阅工具的使用 63 5.4 在网站内加入RSS功能 65 5.4.1 使用Microsoft提供的RSS工具包 65 5.4.2 一个简单的RSS阅读器 66 5.4.3 一个复杂的RSS阅读器 67 5.4.4 让站点提供订阅功能 69 5.5 小结 70 第6章 在线编辑模块 71 6.1 在线编辑的原理 71 6.2 编辑器的界面 71 6.3 一个简单的在线编辑器 72 6.3.1 在线编辑窗口的界面设计 72 6.3.2 在线编辑的功能实现 73 6.3.3 在线编辑的运行效果 74 6.4 多功能在线编辑器的介绍 74 6.4.1 FreeTextBox编辑器 74 6.4.2 FCKEditor在线编辑器 76 6.5 小结 79 第7章 在线支付模块 80 7.1 在线支付介绍 80 7.1.1 在线支付的安全保障 80 7.1.2 在线支付的优点 80 7.2 在线支付的流程 81 7.3 使用支付宝实现在线支付 81 7.3.1 支付宝接口概述 81 7.3.2 支付宝接口服务下载 81 7.4 使用支付宝实现在线支付的实例 82 7.4.1 在项目中加入支付宝程序 82 7.4.2 设计订单提交功能 82 7.4.3 获取支付成功后的返回信息 84 7.4.4 设置支付过程中的通知 88 7.4.5 实现订单到支付宝的提交 90 7.5 小结 92 第8章 电子邮件模块 93

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧