数据库优先存储过程与实体框架映射

时间:2015-11-16 16:27:14

标签: entity-framework stored-procedures viewmodel repository-pattern

我正在开发一个项目,其中DB开发人员强烈建议在数据库上拥有所有业务逻辑和繁重的处理,因此如果将来需要进行任何更改,应用程序将保持不变,并且可以在只有数据库方面。

考虑到这一点,我需要使用数据库优先方法并对所有事务使用存储过程,从仅影响一个实体/表的基本CRUD操作到影响多个具有相同实体/表的表的更详细的操作存储过程。

现在,我发现很难找到一个详细而且更新的例子来引导我完成这个,我对软件开发人员来说比较新。所以我仍然在努力解决一些问题。我正在使用VS 2013,Entity Framework 6和ASP.NET MVC 5.

我使用Entity Framework来创建模型,为实体创建.cs文件,为存储过程创建其他文件,对于简单的查找表:

public partial class SPTestSelectCategory_Result
{
    public int CategoryID { get; set; }
    public string CategoryDescription{ get; set; }
}

现在我可以在模型context.cs中看到存储过程反映如下:

public virtual ObjectResult<SPTestSelectCategory_Result> SPTestSelectCategory()
{
    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<SPTestSelectJobSectors_Result>("SPTestSelectCategory");
}

我看过一些旧的教程,说我需要将我的存储过程映射到实体,但我似乎无法在VS 2013中找到如何做到这一点。对于初学者我想强迫网站使用存储过程来选择/插入/更新一个简单的表,例如我作为示例显示的表,我该怎么做?

该表的类如下所示:

public partial class tblCategory
{
    public tblCategory()
    {
        this.tblEmployer = new HashSet<tblEmployer>();
        this.tblStudent = new HashSet<tblStudent>();
    }

    public int CategoryID { get; set; }
    public string CategoryDescription { get; set; }

    public virtual ICollection<tblEmployer> tblEmployer { get; set; }
    public virtual ICollection<tblStudent> tblStudent { get; set; }
}

我最终的目标是,对于使用不同表格的更复杂的存储过程, ViewModel ,以类似于布局的形式连接到最终的View,我也是准备好存储库模型,但我无法理解如何将它与数据库中的存储过程一起使用。

我知道这个问题很长,但非常感谢,谢谢!

0 个答案:

没有答案