-1

私はASP.NETにかなり慣れていないので、最新の.NETフレームワークにパックされたすべての機能で使用することを意図した方法で使用していないと思います。現在、.NET フレームワーク 4,0 を使用しています。コードにいくつかのエラーがあります。私が古代の手法を使用しているように見えることを気にしないでください。

私はこのようにすべてを構成しました。

私は webservice.cs というファイルを作成しました。このファイルには、次のような webmethods が含まれています。

[WebMethod]
public string laggtillprodukt(string pro1, int pro2)
{
    int sqlstatus;
    string sqlinsertstringfull = "INSERT INTO t_produkter (produkt_namn) VALUES ('" + pro1 + "');" +
                                 "SELECT produkt_id FROM t_produkter WHERE (produkt_id = SCOPE_IDENTITY()); " +
                                 "INSERT INTO t_produktegenskaper (produkt_id, egenskaps_id) " +
                                 "SELECT SCOPE_IDENTITY(), egen.egenskap_id " +
                                 "FROM t_kopplingmallegenskaper as egen " +
                                 "WHERE egen.mall_id = " + pro2 + ";";

   sqlstatus = executeWriteSqlQuery(sqlinsertstringfull);

   return "These values has been added to the db" + pro1 + " and " + pro2 + " SQL STATUS:" + sqlstatus;
}

私のコード ビハインドでは、正しい関数を呼び出すためにこれを行います (以下の関数は、多くの SQL クエリの 1 つを説明するためだけに、webmethod とは何の関係もありません。

 protected void laggtillnymallbutton_Click(object sender, EventArgs e)
{
    WebService globalwebservice = new WebService();

    if (string.IsNullOrWhiteSpace(laggtillnymall.Text))
    {
        Label1.Text = "String cannot be empty or just whitespaces!";
    }
    else
    {
        globalwebservice.laggtillmall(laggtillnymall.Text.Trim());
        Label1.Text = "Template added";
    }

もっと効率的な方法でこれを行うことはできませんか。すべての Web メソッドがデータの挿入またはデータの読み取りに使用する一般的なメソッドを構築し、コードを節約しましたが、LINQ のようなものを見てきました。それは私が持っているよりもはるかに少ないコードです。私を助けるか、それほど古くないコーディング方法を教えてください;)

4

2 に答える 2

4

さて、私に見せてください....

  • ビジネス ロジックを DAL から分離できません。これは非常に悪いアプローチです。データ アクセスは完全に別のレイヤーにある必要があり、Web サービスには属していません。

  • コードは SQL インジェクションhttps://www.owasp.org/index.php/SQL_Injectionに対して非常に脆弱です。代わりに、必要に応じて、パラメーター化されたクエリ http://www.techrepublic.com/article/shorten-development-time-by-using-parameterized-queries-in-adonet/6093390 またはストアド プロシージャを使用する必要があります。

  • 命名規則も良くありません... .NETでは、通常、「thisismysuppaduppamethod」ではなくキャメルケースを使用することを好み、変数名はあまり明確ではありません。マシン用のコードを書いているのではなく、人々が読むためのコードを書いていることに注意してください。コードは簡単に読める必要があり、コードを見た人は誰でもその目的をすぐに理解できる必要があります。将来、コードを修正する必要が生じた場合、たとえば 2 ~ 3 年後に、コードをさらに詳しく調べなくても、string pro1、int pro2 が実際に何を意味するのかがすぐにわかるとは思えません。

  • 母国語の代わりに英語を使うことをお勧めします。コードに関して助けが必要になった場合 (またはチームに新しい同僚を紹介した場合) は、「これは何の略ですか??」と説明する必要がないため、通常は優れた方法と見なされます。

于 2012-07-21T14:10:31.587 に答える
1

あなたが求めているのは、データベースにアクセスするためのより良い方法だと思います。手始めに、 Linq-To-SQLEntityFrameworkを調べる必要があります。これらのテクノロジーは、データストアを処理する際のより現代的で扱いやすいアプローチを提供します。

于 2012-07-21T13:51:32.627 に答える