我正在使用 ASP.NET MVC 和实体框架开始一个新的小项目。(SQL Server - 大约 20 个数据库表)在过去的项目中,我使用过 Linq2SQL,但它似乎已经过时了。
我已经阅读了很多关于使用存储库模式进行 EF(优点和缺点)的帖子,对我来说,没有存储库模式的代码似乎更好/更简单。
我创建了以下项目架构:
namespace MySite.Models
{
public class User
{
public Int32 ID { get; set; }
public String Email { get; set; }
public String Password { get; set; }
public String Name { get; set; }
public Int32 Gender { get; set; }
}
}
namespace MySite.DAL
{
public class Users
{
public static IEnumerable<User> GetUsers()
{
using (var context = new DatingSiteContext())
{
return context.Users.ToList();
}
}
public static User GetUserByID(int id)
{
using (var context = new DatingSiteContext())
{
return context.Users.Find(id);
}
}
}
namespace MySite.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
var users = DAL.Users.GetUsers();
return View(users);
}
}
}
- 像这样使用EF有什么缺点?(除了缺乏单元测试支持)
- 在每次调用 DAL 时创建一个新的 DbContext 是错误的吗?任何性能命中?
- 使用 EF 的任何其他推荐结构?例子?:)
- 你会在新项目中使用 Linq2SQL 吗?
谢谢你。
编辑:
GetUsers() 和 GetUserByID() 中的代码仅作为示例,我理解从数据库返回所有记录是一种不好的做法(缺少分页或过滤器)