0

シンプルな Web アプリケーションにビジネス層を追加しようとしています。私のために生成された EF のような
クラスUserLang

現在のBLはこんな感じです。

public class BLuser
    {
        public static List<User> allUsers()
        {
            using (MyEntities ctx = new MyEntities())
            {
                var users = from us in ctx.Users select us;
                return users.ToList<User>();
            }
        }


        public static int getUsersLangId(int id)
        {
            using (MyEntities ctx = new MyEntities())
            {
                var langid = (from us in ctx.Users where us.Id == id select us.Lang.Id).FirstOrDefault();
                return langid;
            }
        }

        public static void changeUsersLangId(int userId, int langId)
        {
            using (MyEntities ctx = new MyEntities())
            {
                var user = (from us in ctx.Users where us.Id == userId select us).FirstOrDefault();
                user.LangId = langId;
                ctx.SaveChanges();
            }
        }

        public static void addNewUser(int userId)
        {
            User newUser = new User();
            newUser.Id = userId;
            newUser.LangId = 0;

            using (MyEntities ctx = new MyEntities())
            {
                ctx.Users.Add(newUser);
                ctx.SaveChanges();
            }
        }

    }

次に、コードビハインドで次のように呼び出すことができます。
BLuser.changeUsersLangId(1,1);

それは良いアプローチですか (特に静的メソッド)? 何かが欠けている気がしましたが、その場合は静的メソッドのため、BL オブジェクトの永続性を気にする必要はありません。

これに関する役立つチュートリアルはありますか?私が見つけたのは、初心者にとって理解しにくい非常に複雑な記事です。
ありがとう。

4

2 に答える 2

1

この場合Repository Pattern、 を使用することをお勧めします。このパターンは、ビジネス サービスのファサードを構成します。

このパターンは、ORM に基づくこのソリューションで使用されます

リンク: http://www.codeproject.com/Articles/363501/Repository-pattern-with-Entity-Framework-Code-Firs

于 2013-03-19T13:42:47.673 に答える
1

あなたのデータ アクセス コードをビジネス ロジック層に挿入します。そうすれば、ビジネス ロジックの単体テストがはるかに簡単になります。

依存性注入パターンを見てください。

データ アクセス コードはオブジェクトを返す必要があります。Repository パターンを見てください。

これらの記事について特定の質問がある場合は、SO ユーザーが役立つと確信しています。

一般に、静的メソッドは、単体テストが困難な柔軟性のないコードになるため、決して良い考えではありません。

于 2013-03-19T13:46:26.797 に答える