簡體   English   中英

asp.net中的實體框架和業務層

[英]Entity framework and Business layer in asp.net

我正在嘗試將業務層添加到我的簡單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對象的持久性。

有沒有一些有用的教程,我發現的是相當復雜的文章,新手不容易理解。
謝謝。

在這種情況下,我建議您使用Repository Pattern ,此模式包含您的業務服務的外觀。

此模式在此解決方案中基於ORM使用

鏈接: http//www.codeproject.com/Articles/363501/Repository-pattern-with-Entity-Framework-Code-Firs

我會將您的數據訪問代碼注入業務邏輯層。 這樣,對您的業務邏輯進行單元測試將變得更加容易。

看看依賴注入模式。

您的數據訪問代碼應該返回對象,看一下Repository模式

如果您對這些文章有具體問題,我相信SO用戶可以提供幫助。

一般來說,靜態方法永遠不是一個好主意,因為它們會導致難以進行單元測試的不靈活的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM