1

単純なORMレイヤーのsps/classes/interfacesなどを実行するためのさらに別のコードジェネレーターを作成していることに気付きました。今回はほとんどの内臓がSQLにあります。spsを呼び出したり結果を取得したりするための汎用C#DALを持っています(1時間ほどかかり、小さいです)。

今ではもっと簡単な方法があると確信していました...ありますか?

私はSQLに自信があり、能力があり、ストアドプロシージャなどを使用しています。SQLから身を隠すつもりはありません。オブジェクトの入力/永続化のコーディングから退屈な繰り返しを取り除くだけです。私は、テンプレート言語/複雑なアプリ、またはメガブロートウェアを生成する(または肥大化したMSライブラリに基づいて構築する)アプリを学ぶことに興味がありません。また、既存のデータベースから開始できる必要があります。

それはまだ自分でロールする場合ですか?本当に?

.Net 2.0(Winforms)

編集:それが本当に簡単/迅速に拾うことができるのであれば、私は完全に反テンプレートではありません。理想的には、ソリューションは小さく、無料で、他の開発者にとっては怖くないでしょう。

4

4 に答える 4

4

BLToolkitを見てみましょう:

[TestFixture]
public class ExecuteObject
{
    public abstract class PersonAccessor : DataAccessor<Person>
    {
        // Here we explicitly specify a stored procedure name.
        //
        [SprocName("Person_SelectByKey")]
        public abstract Person GetByID(int @id);

        // SQL query text.
        //
        [SqlQuery("SELECT * FROM Person WHERE PersonID = @id")]
        public abstract Person GetPersonByID(int @id);

        // Specify action name.
        // Stored procedure name is generated based on convention
        // defined by DataAccessor.GetDefaultSpName method.
        //
        [ActionName("SelectByName")]
        public abstract Person GetPersonByName(string @firstName, string @lastName);

        // By default method name defines an action name
        // which is converted to a stored procedure name.
        // Default conversion rule is ObjectName_MethodName.
        // This method calls the Person_SelectByName stored procedure.
        //
        public abstract Person SelectByName(string @firstName, string @lastName);
    }

    [Test]
    public void Test()
    {
        PersonAccessor pa = DataAccessor.CreateInstance<PersonAccessor>();

        // ExecuteObject.
        //
        Assert.IsNotNull(pa.GetByID        (1));
        Assert.IsNotNull(pa.GetPersonByID  (2));
        Assert.IsNotNull(pa.GetPersonByName("Tester", "Testerson"));
        Assert.IsNotNull(pa.SelectByName   ("Tester", "Testerson"));
    }
}
于 2009-04-22T15:16:24.037 に答える
2

あなたの質問に直接答えるわけではありません。

Ayende によるこの素晴らしい投稿を読んでください:独自のオブジェクト リレーショナル マッパーを作成しない 25 の理由

NHibernate の使用をお勧めします。

于 2009-04-22T15:11:00.120 に答える
1

サブソニックを見てください。

于 2009-04-22T15:10:46.017 に答える
0

私は nHibernate が好きで、SQL に非常に精通しています。ただし、テーブルごとに最低 4 つの proc を作成する必要がないのが気に入っています。nHibernate の実行方法がわからない場合。

多くのコード ジェネレーターがありますが、テンプレートの作成方法を学びたくない場合や、作成されたテンプレートやコミュニティ テンプレートに満足できない場合は、自分で作成するしかありません。

于 2009-04-22T15:10:11.993 に答える