C# 在web应用程序中构造存储库和实体框架的正确方法

C# 在web应用程序中构造存储库和实体框架的正确方法,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我正在学习实体框架并构建一个简单的web应用程序。我正在Visual Studio中使用ASP.net网页(Razor3) 我想为数据库操作创建一个基本结构。我有实体,我可以用它添加、更新记录,但我仍然在为这些实体使用另一个类。我有一个名为cDB的类,其中有几个类似的方法: public class cDB { private maasEntities1 m = new maasEntities1(); public void createUpdateBranch(Branch

我正在学习实体框架并构建一个简单的web应用程序。我正在Visual Studio中使用ASP.net网页(Razor3)

我想为数据库操作创建一个基本结构。我有实体,我可以用它添加、更新记录,但我仍然在为这些实体使用另一个类。我有一个名为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;
    }
}
if (branch.bra_id == 0)
{
    m.Branches.Add(branch);
}
这很简单,我现在只添加记录。关于这一点,我有几个问题:

  • 我想在整个项目中使用一个DBContext,如果我需要从中读取一些数据,例如,如果我想列出分支的详细信息,我将执行以下操作:

    cDB DB = new cDB();
    
    Branch curBranch = new Branch();
    curBranch = DB.getContext().Branches.Find(1);
    
    这样做对吗

  • 我可以使用m.branchs.Add(branch)页面中的代码,也许我不需要在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;
        }
    }
    
    if (branch.bra_id == 0)
    {
        m.Branches.Add(branch);
    }
    
    再说一次,这是正确的方法吗


  • 谢谢

    每当你添加抽象层时,你都需要准确地理解你从抽象中获得了什么。依我看,在EntityFramework之上添加存储库模式并没有添加任何有用的内容,因为EF DbContext就是存储库


    进一步阅读:

    确保遵循常见的C#约定。例如,“bra_id”可能应该是“BranchId”,而“cDB”可能应该是“CountryDatabase”或C代表的任何东西。函数应该大写,所以“saveChanges”应该是“saveChanges”。这没什么大不了的,但如果其他开发人员可能会看你的代码(例如,StackOverflow上的人或你的同事),那么融入其中是个好主意。@mason你说得对,Entity Framework对我来说是一个新的开始,也是改变一些坏习惯的好时机,谢谢。我现在想它对我没有任何帮助,但它看起来很好。但你可能是对的。我现在就把它取下来,看看是否需要类似的东西。