在代码中实现存储过程第一个现有数据库

时间:2014-01-06 13:00:28

标签: c# asp.net-mvc stored-procedures repository-pattern unit-of-work

我正在使用ASP.NET,C#,MVC 5和Entity Framework开展项目。我已经实现了通用的DBContext和Generic存储库,并使用UnitOfWorks来实现独立的业务功能,这一切都运行良好。我需要使用存储过程(已经与数据库一起保存)和定义行为,我正在努力与

我的存储过程

USE [DORIS_DB_01]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetFunctionByID](
@FunctionId INT
)
AS
BEGIN
SELECT * 
FROM Functions As Fun
WHERE Function_ID = @FunctionId
END

我的意图是在UnitOfWork中调用存储过程,如果这是正确的方法

通用存储库

public interface IGenericRepository<TEntity> : IDisposable where TEntity : class
{

    IQueryable<TEntity> GetByIdAsync(int id);
    IQueryable<TEntity> GetAll();

}

存储库实施

 public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
{
    protected DbSet<TEntity> _DbSet;
    private readonly DbContext _dbContext;

    public GenericRepository()
    {

    }

    public GenericRepository(DbContext dbContext)
    {
        this._dbContext = dbContext;
        _DbSet = _dbContext.Set<TEntity>();
    }


    public IQueryable<TEntity> GetAll()
    {
        return _DbSet;
    }

    public IQueryable<TEntity> GetByIdAsync(int id)
    {
        var receive_ID = id;

        return _DbSet;
    }

    public void Dispose()
    {

    }
}

其余代码可以在这里找到:

best practice to implement repository pattern and unitOfWork in ASP.NET MVC

1 个答案:

答案 0 :(得分:0)

我不知道我是否理解你,但请查看http://www.codeproject.com/Questions/677043/Execute-Raw-sql-query-in-entity-framework

这篇文章展示了如何执行原始sql查询。现在在存储库中,您可以创建方法'ExecuteStoredProcedure'以将其公开给工作单元。