数据链路层和最佳实践



我需要知道以下方法中的最佳实践。我有一个使用分层架构的应用程序。在数据层,我有两个类如下。

将数据表转换为具有相应业务对象的List的类。

public List<User> GetUser()
        {
            List<User> user = new  List<User>();
            DataTable dtLoginDetails = new DataTable();
            string selectQuery = "SELECT * FROM user_details";
           try
            {
                dtUserDetails = connection.SelectCommand(selectQuery); // call the function in another class
            }
            catch (MySqlException mx)
            {
                throw;
            }
            if (dtUserDetails.Rows.Count > 0)
            {
               //loops through datatable 'dtUserDetails' and converts to List
            }
            return user;            
        }

执行所有数据库操作的另一个类。

public DataTable SelectCommand(String query)
        {
                DataTable dtSelect = new DataTable();
                try
                {
                    MySqlCommand command = ConnecttoDB().CreateCommand();
                    command.CommandText = query;
                    MySqlDataAdapter dtAdapter = new MySqlDataAdapter(command);
                    dtAdapter.Fill(dtSelect);
                    DisconnecttoDB();
                }
                catch (MySqlException mx)
                {
                    throw;
                }
                finally
                {
                    DisconnecttoDB(); 
                }
                return dtSelect;
        }

所以我只是想知道这是一个好方法还是我应该像下面这样写。

 public List<Person> Read()
        {
            con.ConnectionString = ConString;
            if (ConnectionState.Closed == con.State)
                con.Open();
            SqlCommand cmd = new SqlCommand("select * from Person",con);
            try
            {
                SqlDataReader rd = cmd.ExecuteReader();
                while (rd.Read())
                {
                    objP = new Person();
                    objP.ID = Convert.ToInt16(rd.GetValue(0));
                    objP.name = rd.GetString(1);
                    objP.surname = rd.GetString(2);
                    List.Add(objP);
                }
                return List;
            }
            catch
            {
                throw;
            }
        }

在这种情况下,我没有单独的类来做数据库操作,但我需要用单独的sql查询编写不同的函数,返回不同的业务对象。

谢谢。

您应该有以下图层:

    数据库
  • 数据访问层(负责支持每个表所需的每种操作类型的层)
  • 业务层(负责算法数据库操作组合的层)
  • 发动机
  • UI

假设你有一个银行应用程序,一个用户想把钱汇给另一个用户,所以他输入值,选择另一个用户,然后点击一个按钮。这发生在UI上。单击按钮将触发引擎中的事件。事件:送钱。引擎将任务传递给业务层。在业务层,必须执行算法。在交易中有两个操作:从您的金额中减去金额,以及为接收方增加相同金额。然后业务层将任务传递给访问层,访问层又生成要执行的SQL并将其发送到数据库服务器。

相关内容

  • 没有找到相关文章

最新更新