C#|如何制作类实例(对象)以将数据从DAL传递到BLL

问题描述 投票:0回答:1

我正在用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文件应该是什么样(代码方式)我对这一切都是陌生的,因此,如果您能解释自己的工作以及真正简单的原因,那就太好了。

非常感谢!

c# architecture data-access-layer business-logic-layer
1个回答
0
投票

我们说这是DTO(数据传输对象)的概念。

一个人可以使用DTO类为DTO创建另一个名称空间。

在您的特定情况下,dto希望

public class UserDTO{

public string name{get;set;}

}

在业务层和DAL中都添加DTO的引用。

如下从业务层调用DAL

List<UserDto> users = new ClsDataLayer.TestList();

您将必须更新DAL层以返回DTO。

使用DTO的好处是您可以发送多个值,而不仅仅是当前正在发送的一个值

© www.soinside.com 2019 - 2024. All rights reserved.