0

我的 Web 应用程序分为不同的层,其中之一是业务层,其工作方式如下:

PersonBusiness pb = new PersonBusiness();
Person p = pb.GetPerson(10);

然后在查看记录时将 person 对象加载到 ASP.NET 控件中,然后为了保存,我执行以下操作:

PersonBusiness pb = new PersonBusiness();
Person p = new Person();
p.Name = "Alex";
pb.SavePerson(p);

如果我需要在应用程序中显示一个实际上是从数据库调用视图的结果的报告,该视图实际上是业务层中不同对象的混合?您是否建议绕过业务层并加载来自视图的数据集?在这里使用 OOP 有意义吗?如果为真,那么我将不得不创建一个自定义对象,该对象仅用于该单个报告而没有其他用途。

这更像是一个通用问题,并不严格适用于 C# 和 SQL ,但基本上适用于那里的任何业务应用程序......

我希望我的问题是有道理的,

感谢您的宝贵时间,祝您有美好的一天

4

1 回答 1

1

这是来自企业级应用程序。我们运行一个查询来搜索数据库中的多个表以返回一个数据集。然后我们将该数据集加载到数据网格中。它运行良好且易于使用。我们在其他任何地方都使用 OOP,但这在试图限制您必须编写的代码量和易用性时是有意义的。

// Call in program
m_Info = m_InfoDAO.GetInfo();
//Database Call
public DataSet GetInfo()
    {
        try
        {
            if (this.cnn == null)
                this.ConnectAndEnable(ref cnn);

            string sql = @" select '0' as select_id, folder_name, folder_name as hidden_folder, (to_char(mod_date,'MM/DD/YYYY hh12:mi AM') || ' ' || mod_user) as mod_date
                            from   index_info , index_patient
                            where  deleted_date is null
                            order by folder_name asc";

            OracleCommand cmd = new OracleCommand(sql, cnn);
            OracleDataAdapter da = new OracleDataAdapter();
            da.SelectCommand = cmd;
            DataSet ds = new DataSet();
            da.Fill(ds);
            cmd.Parameters.Clear();

            return ds;
        }
        catch (Exception ex)
        {
            Trace.WriteLine("Exception in InfoDAO.GetInfo:  " + ex.Message);
            throw ex;
        }
    }

//Initialize Grid
gridInfo.DataSource = m_Info;
gridInfo.ActiveRow = null;
于 2012-07-25T16:28:04.860 回答