![](/img/trans.png)
[英]asp.net MVC 4 with Data Access Layer using Entity Framework 5?
[英]Entity framework and Business layer in asp.net
我正在嘗試將業務層添加到我的簡單Web應用程序中。
EF為我生成了類,如User
, Lang
我目前的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.