在web应用程序中构建存储库、实体框架的正确方法



我正在学习实体框架和建立一个简单的web应用程序。我在Visual Studio中使用ASP.net Web Pages (Razor 3)。

我想创建一个数据库操作的基本结构。我有实体,我可以添加,更新记录,但我仍然使用一个类那些。我有一个名为cDB的类,其中有一些这样的方法:

public class cDB
{
    private maasEntities1 m = new maasEntities1();
    public void createUpdateBranch(Branch branch)
    {
        if (branch.bra_id == 0)
        {
            m.Branches.Add(branch);
        }
    }
    public void saveChanges()
    {
        m.SaveChanges();
    }
    public maasEntities1 getContext()
    {
        return m;
    }
}

这很简单,我现在只是添加记录。我有几个问题:

  1. 我想在整个项目中使用一个DBContext,如果我需要从中读取一些数据,例如,如果我想列出分支的详细信息,我将这样做:

    cDB DB = new cDB();
    Branch curBranch = new Branch();
    curBranch = DB.getContext().Branches.Find(1);
    

    这样做对吗?

  2. 我可以在页面中使用 m.s branches . add (branch);代码,也许我不需要在cDB类中这样做?看起来好多了吧?

  3. 我检查它是否是一个新的记录或更新像这样:

    if (branch.bra_id == 0)
    {
        m.Branches.Add(branch);
    }
    

    再问一次,这是正确的方式吗?

谢谢

无论何时添加抽象层,您都需要准确地理解通过该抽象获得了什么。IMHO,在EntityFramework之上添加存储库模式并没有添加任何有用的东西,因为EF DbContext就是存储库。

进一步阅读:基于UnitOfWork的存储库不是一个好主意

最新更新