2

これは、顧客オブジェクトを呼び出し元に返す createcustomer 関数です。getCustomerDetail は、顧客オブジェクトのプロパティに値を設定するデータテーブルを返します。問題は、オブジェクトに変更があるたびに、これを再度変更する必要があることです。どうすればこの問題を解決して、Customer オブジェクトを変更するだけで済み、コード全体を変更する作業を節約できますか?

  public Objects.Customer createCustomer()
    {
        DataTable dt = Database.Master.Customer.getCustomerDetail(objCustomer.Custcode);

        objCustomer.Billaddress1 = dt.Rows[0]["Billaddress1"].ToString();
        objCustomer.Billaddress2 = dt.Rows[0]["Billaddress2"].ToString();
        objCustomer.Billaddress3 = dt.Rows[0]["Billaddress3"].ToString();
        objCustomer.Billcontact = dt.Rows[0]["Billcontact"].ToString();
        objCustomer.Billfaxno = dt.Rows[0]["Billfaxno"].ToString();
        objCustomer.Billpostalcode = dt.Rows[0]["Billpostalcode"].ToString();
        objCustomer.Billremarks = dt.Rows[0]["Billremarks"].ToString();
        objCustomer.Billtelno = dt.Rows[0]["Billtelno"].ToString();
        objCustomer.Custcode = dt.Rows[0]["Custcode"].ToString();
        objCustomer.Custname = dt.Rows[0]["Custname"].ToString();
        objCustomer.Doout = dt.Rows[0]["Doout"].ToString();
        objCustomer.Douom = dt.Rows[0]["Douom"].ToString();
        objCustomer.Inuom = dt.Rows[0]["Inuom"].ToString();
        objCustomer.Location = dt.Rows[0]["Location"].ToString();
        objCustomer.Outremarks1 = dt.Rows[0]["Outremarks1"].ToString();
        objCustomer.Outremarks2 = dt.Rows[0]["Outremarks2"].ToString();
        objCustomer.Outremarks3 = dt.Rows[0]["Outremarks3"].ToString();
        objCustomer.Pacout = dt.Rows[0]["Pacout"].ToString();
        objCustomer.Pacuom = dt.Rows[0]["Pacuom"].ToString();
        objCustomer.Perout = dt.Rows[0]["Perout"].ToString();
        objCustomer.Peruom = dt.Rows[0]["Peruom"].ToString();
        objCustomer.Shipaddress1 = dt.Rows[0]["Shipaddress1"].ToString();
        objCustomer.Shipaddress2 = dt.Rows[0]["Shipaddress2"].ToString();
        objCustomer.Shipaddress3 = dt.Rows[0]["Shipaddress3"].ToString();
        objCustomer.Shipcontact = dt.Rows[0]["Shipcontact"].ToString();
        objCustomer.Shipfaxno = dt.Rows[0]["Shipfaxno"].ToString();
        objCustomer.Shippostalcode = dt.Rows[0]["Shippostalcode"].ToString();
        objCustomer.Shipremaks = dt.Rows[0]["Shipremaks"].ToString();
        objCustomer.Shiptelno = dt.Rows[0]["BilladdresShiptelnos1"].ToString();
        objCustomer.Shortname = dt.Rows[0]["Shortname"].ToString();


        return objCustomer;
    }
4

2 に答える 2

1

いくつかのアイデア:

  • Entity FrameworkNHibernateなどのオブジェクトリレーショナルモデル(ORM)ツールを使用する
  • CodeSmith Generatorなどのツールを使用して、このコードを自動的に生成します
  • AutoMapperとReflectionを使用してオブジェクトに水分を補給します
于 2012-04-14T02:38:35.140 に答える
0

Auotamapperを使用できます。

AutoMapper.Mapper.CreateMap<IDataReader, Objects.Customer>();
var results = AutoMapper.Mapper.Map<IDataReader, IList<Objects.Customer>>(dt.CreateDataReader());
于 2012-04-14T02:37:43.550 に答える