从EF最佳实践中调用SProcs

时间:2013-09-12 10:50:00

标签: c# .net entity-framework stored-procedures

我已将一些存储过程导入EF。

仅使用存储过程,不使用LINQ to Entities。

这方面的最佳做法是什么?

我只是有一个使用Entities字段调用存储过程的类:

public class DataAccess : IDataAccess
{
    private readonly MyEntities entities = new MyEntities();

    public IEnumerable<MyObj> GetMyObJects()
    {
        return entities.GETMyObj().Select(x => new MyObj { Name = x.NAME }).ToList();
    }

    public IEnumerable<MyObj2> GetMyObJects2()
    {
        return entities.GETMyObj2().Select(x => new MyObj2 { Name = x.NAME }).ToList();
    }

    public IEnumerable<MyObj3> GetMyObJects3()
    {
        return entities.GETMyObj3().Select(x => new MyObj3 { Name = x.NAME }).ToList();
    }
} 

这是推荐的吗?我应该为每种方法使用新的Entities吗?

如下:

public IEnumerable<MyObj3> GetMyObJects3()
{            
    using(MyEntities entities = new MyEntities())
    {
        return entities.GETMyObj3().Select(x => new MyObj3 { Name = x.NAME }).ToList();
    }
}

3 个答案:

答案 0 :(得分:1)

Julie Lerman撰写了一篇非常全面的文章,其中包含有关此主题的示例代码,它位于here

答案 1 :(得分:1)

是。你的帖子中有什么是推荐的方式,所以你会有类似的东西:

public IEnumerable<MyObj3> GetMyObJects3()
{            
    using(MyEntities entities = new MyEntities())
    {
        ObjectResult<SPResult> Results = entities.GetMyObJects3();
        IEnumerable<MyObj3> results = Results.ToList();

        return results;
    }
}

使用EDMX文件,创建函数导入。在此示例中,GetMyObJects3()是函数导入。

答案 2 :(得分:0)

只要您的代码只从数据库中读取数据,我就不会发现任何问题。