2012-04-14 4 views
2

Dies ist meine createcustomer Funktion, die ein Kundenobjekt an den Aufrufer zurückgibt, getCustomerDetail gibt eine Datentabelle zurück, die dann die Kundenobjekteigenschaften mit den Werten auffüllt. Problem ist immer, wenn sich das Objekt ändert, ich muss es wieder ändern, wie löse ich dieses Problem, so dass ich nur im Customer-Objekt ändern muss und es meine Arbeit spart, die gesamten Codes zu ändern?Wie verkürzen Sie dieses Stück C# objektorientierten Code?

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; 
    } 
+0

Verwenden Sie stark-t yped, automatische 'DataSet's stattdessen? – Ryan

+0

irr .. kannst du das bitte erklären? – Melvin

+0

Verwenden Sie ein ORM wie Entity Framework oder vielleicht Dapper? Dies ist wahrscheinlich eine der leistungsstärksten Optionen bereits, warum ändern Sie es? –

Antwort

1

Einige Ideen:

+0

danke, ich werde es sehen .. – Melvin

0

Sie können Auotamapper verwenden.

AutoMapper.Mapper.CreateMap<IDataReader, Objects.Customer>(); 
var results = AutoMapper.Mapper.Map<IDataReader, IList<Objects.Customer>>(dt.CreateDataReader()); 
Verwandte Themen