C# |如何制作用于将数据从 DAL 传递到 BLL 的类实例(对象)
Posted
技术标签:
【中文标题】C# |如何制作用于将数据从 DAL 传递到 BLL 的类实例(对象)【英文标题】:C# | How to make class instances (objects) for passing data from DAL to BLL 【发布时间】:2020-08-31 00:28:03 【问题描述】:我正在处理我的第一个 C# 架构项目,但遇到了一个我无法解决的问题,也无法在 Internet 上找到答案(可能是因为我什至不知道用谷歌搜索什么)。 所以我想我应该尝试向熟悉我正在尝试做的事情的人寻求帮助。
在我的 DAL 中,我有以下代码:
using System;
using System.Data.SqlClient;
using System.Data;
using System.Collections.Generic;
namespace DAL
public class ClsDataLayer
SqlConnection SqlConn = new SqlConnection("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=3tireexample;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
public List<String> Testlijst()
string commandText_Testlijst = "Select * from Usermst";
List<String> Gebruikers = new List<string>();
using (SqlConn)
SqlConn.Open();
using (SqlCommand cmd = new SqlCommand(commandText_Testlijst, SqlConn))
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataReader reader = cmd.ExecuteReader())
while (reader.Read())
Gebruikers.Add(reader.GetString(0));
return Gebruikers;
;
public bool InsertDataBool(string _name, string _city, string _email)
string commandText = "Insert into Usermst values (@name, @city, @email)";
bool test = false;
using (SqlConnection connection = new SqlConnection("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=3tireexample;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"))
SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.Add("@name", SqlDbType.NVarChar);
command.Parameters["@name"].Value = _name;
command.Parameters.Add("@city", SqlDbType.NVarChar);
command.Parameters["@city"].Value = _city;
command.Parameters.Add("@email", SqlDbType.NVarChar);
command.Parameters["@email"].Value = _email;
command.ExecuteNonQuery();
test = true;
return test;
我正在尝试将从列表中收到的信息传递给我的业务层。 我正在阅读其他一些 *** 帖子,我看到有人说要使用类实例来解决这个问题,但问题是我不知道怎么做。 如何将数据从我的公共列表(在我的 DAL 中)传输到我的 UserData.cs(这是我的类实例的名称)? 我的问题真的是我的 UserData.cs 文件应该是什么样子(代码方面) 我对这一切都很陌生,所以如果您能解释一下您的工作以及为什么非常简单,那就太好了。
非常感谢您!
【问题讨论】:
在最简单的形式中,它可能只是var user = new User();
,然后使用您从 SQL 查询中检索到的值设置 user
的属性。
@ScottHannen 在代码中应该是什么样子?
不幸的是,这超出了我在这个网站上的充分覆盖范围。
【参考方案1】:
我们将其称为 DTO(数据传输对象)的概念。
可以使用 DTO 类为 DTO 创建另一个命名空间。
在您的特定情况下,dto 想要
public class UserDTO
public string nameget;set;
在业务层和 DAL 中添加 DTO 的引用。
从业务层调用 DAL 如下
List<UserDto> users = new ClsDataLayer.TestList();
您必须更新 DAL 层才能返回 DTO。
使用 DTO 的好处是您可以发送多个值,而不仅仅是当前发送的一个值
【讨论】:
以上是关于C# |如何制作用于将数据从 DAL 传递到 BLL 的类实例(对象)的主要内容,如果未能解决你的问题,请参考以下文章
如何将用于审计目的的 web n 层应用程序中的用户身份从用户界面层传递到数据访问层?