我正在用C#进行我的第一个建筑项目,遇到一个我无法解决且无法在Internet上找到答案的问题(可能是因为我什至都不知道要用Google做什么)。因此,我认为我应该尝试从熟悉我要做什么的人那里寻求帮助。
在我的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;
}
}
}
我正在尝试将我从列表中收到的信息传递给我的业务层。我在阅读其他StackOverflow帖子,发现有人说要使用类实例来解决此问题,但问题是我不知道如何做。如何将数据从公共列表(在DAL中)传输到UserData.cs(这是类实例的名称)?我的问题确实是我的UserData.cs文件应该是什么样(代码方式)我对这一切都是陌生的,因此,如果您能解释自己的工作以及真正简单的原因,那就太好了。
非常感谢!
我们说这是DTO(数据传输对象)的概念。
一个人可以使用DTO类为DTO创建另一个名称空间。
在您的特定情况下,dto希望
public class UserDTO{
public string name{get;set;}
}
在业务层和DAL中都添加DTO的引用。
如下从业务层调用DAL
List<UserDto> users = new ClsDataLayer.TestList();
您将必须更新DAL层以返回DTO。
使用DTO的好处是您可以发送多个值,而不仅仅是当前正在发送的一个值