从 EF 最佳做法调用 SProcs
本文关键字:调用 SProcs EF 最佳 | 更新日期: 2023-09-27 18:31:00
我已经将一些存储过程导入到 EF 中。
将仅使用存储过程,而不使用 LINQ to 实体。
对此有哪些最佳实践?
我只有一个使用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();
}
}
是的。 你在你的帖子中的内容是推荐的方式,所以你会有这样的东西:
public IEnumerable<MyObj3> GetMyObJects3()
{
using(MyEntities entities = new MyEntities())
{
ObjectResult<SPResult> Results = entities.GetMyObJects3();
IEnumerable<MyObj3> results = Results.ToList();
return results;
}
}
使用 EDMX 文件 创建函数导入。在此示例中,GetMyObJects3()
是函数导入。
Julie Lerman 写了一篇非常全面的文章,其中包含有关此主题的示例代码,它位于此处。
只要您的代码仅从数据库中读取数据,我认为这样做没有任何问题。