0

私の Web アプリケーションはさまざまなレイヤーに分かれています。そのうちの 1 つは、次のように機能するビジネス レイヤーです。

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 を使用するのは理にかなっていますか? true の場合、その 1 つのレポートだけに使用されるカスタム オブジェクトを作成する必要があります。

これは、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 に答える