我已将一些存储过程导入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();
}
}
答案 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)
只要您的代码只从数据库中读取数据,我就不会发现任何问题。