异常:未能加载文件或程序集”DAL”或它的某一个依赖项——解决办法

    下面是我再使用抽象工厂+反射重构机房时,在Factoy中出现了下面一个问题:   

    

    去网上查了一下资料,发现这是一个很普遍的问题,它出现的原因主要有两种:

    第一种:

    加载DLL路径错误。解决办法是调整D层生成DLL的路径到UI的bin文件夹中。如下图:

   

    反射的一个原则是:一切皆以UI层的bin文件夹中的dll名称为中心,说白一点,dll就是一个类库。我理解的反射,就是一串拼接的字符串,组成要实例化的类的名字。使用反射加载类时,默认是从UI层中的bin中找的,所以要在UI的bin文件夹下生成D层类的dll,这样才能顺利加载。

 

    第二种:

    是对第一种异常的扩张,异常名称为:未能加载文件或程序集”DAL”或它的某一个依赖项。试图加载格式不正确的程序。这个异常主要是由于引用的项目.net版本与启动的框架不同引起的。如操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题。
    解决方案一:如果是64位机器,IIS——-应用程序池—高级设置——启用32位应用程序 :true。
    解决方案二:修改项目属性——生成——目标平台(比如,X86\X64)

   

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 34
    评论
如果你有一个可以引用的数据访问层(DAL),你可以在该层中编写一个方法来插入数据到数据库中。以下是一个示例代码片段,展示了如何在DAL中编写一个插入数据的方法: ```csharp using System.Data; using System.Data.SqlClient; public class MyDataAccessLayer { private string connectionString; public MyDataAccessLayer(string connectionString) { this.connectionString = connectionString; } public void InsertData(Dictionary<int, int> dataDictionary) { using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); foreach (KeyValuePair<int, int> entry in dataDictionary) { int roleId = entry.Key; int moduleId = entry.Value; string query = "INSERT INTO t_authorities (role_id, module_id) VALUES (@RoleId, @ModuleId)"; SqlCommand command = new SqlCommand(query, connection); command.Parameters.AddWithValue("@RoleId", roleId); command.Parameters.AddWithValue("@ModuleId", moduleId); command.ExecuteNonQuery(); } } } } ``` 在这个示例中,我们创建了一个名为`MyDataAccessLayer`的数据访问层类,并在构造函数中接收数据库连接字符串。 在`InsertData`方法中,我们使用与之前相同的方式来插入数据到数据库表中。这次我们使用了`connectionString`字段作为连接字符串,并在`foreach`循环中遍历`dataDictionary`字典来执行插入操作。 通过将数据插入逻辑放在数据访问层中,可以有效地分离数据访问逻辑和业务逻辑,提高代码的可维护性和可测试性。 你可以在你的业务逻辑层或其他地方实例化该数据访问层,并调用`InsertData`方法来插入数据到数据库中。记得在使用完数据库连接后正确地进行异常处理和资源释放。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值