0

ここにいくつかの C# の例がありますが、実際にそれらを最適化する方法を知りたいと思っています。コード例を最小限に抑えたい。GetDetailsクラスでリファクタリングする実用的な方法はありますかTour、それともクラスでリファクタリングする必要がありCombiTourますか? そしてもちろん、どうすればリファクタリングできますか。

public class Tour
{
    public string zielID;
    public string ort;
    public string strasse;
    public string nummer;
    public string plz;
    public string land;
    public string name;
    public string fahrtNummer;

    public Tour(string zielID)
    {
        this.zielID = zielID;
    }
}

public class CombiTour
{
    public List<Tour> touren;

    public CombiTour()
    {
        this.touren = new List<Tour>();
    }

    public void GetDetails()
    {
        for (int i = 0; i < touren.Count; i++)
        {
            DataSet dsDetails = Tools.oGenericDs("SELECT Strasse, Nummer, PLZ, Ort, Land, Fahrtnummer FROM Ziele WHERE ZielID = " + this.touren[i].ZielID);
            this.touren[i].Strasse = dsDetails.Tables[0].Rows[0]["Strasse"].ToString();
            this.touren[i].Nummer = dsDetails.Tables[0].Rows[0]["Nummer"].ToString();
            this.touren[i].PLZ = dsDetails.Tables[0].Rows[0]["PLZ"].ToString();
            this.touren[i].Ort = dsDetails.Tables[0].Rows[0]["Ort"].ToString();
            this.touren[i].Land = dsDetails.Tables[0].Rows[0]["Land"].ToString();
            this.touren[i].Fahrtnummer = dsDetails.Tables[0].Rows[0]["Fahrtnummer"].ToString();

            dsDetails = Tools.oGenericDs("SELECT Name FROM Kunden WHERE ZielID = " + this.touren[i].ZielID);
            this.touren[i].Name = dsDetails.Tables[0].Rows[0]["Name"].ToString();
        }
    }
}
4

1 に答える 1

2

ORM ( ORMLiteのような軽いもの、またはEntity Frameworkのような重いもの) を使用して、データを POCO との間で変換するためのレッグワークを行うことができます。

文字通り、OrmLite を使用してデータベースからデータを取得するための私のコードは次のとおりです。

var myProducts = connection.Query<Product>("SELECT * FROM Product");

そして、製品のコレクションを取得します。手書きの SQL は必要ありません (より複雑なケースでは必要になる場合もあります)。

また、EF は LinqToSQL を多用します。つまり、手書きの SQL に煩わされることは (あったとしても) めったになく、すべての変換を行うために常に第一級の POCO と LINQ を処理します。

于 2013-11-13T11:26:54.023 に答える