我一直在使用以下代码在我的C#控制器中执行存储过程。db是我的EF数据库上下文。
var sql = @"dbo.sp_add_test @CreatedBy,
@CreatedDate,
@TestId,
@TestStatusId";
List<SqlParameter> parameterList = new List<SqlParameter>();
parameterList.Add(new SqlParameter("@CreatedBy", Int32.Parse(User.Identity.GetUserId()) ));
parameterList.Add(new SqlParameter("@CreatedDate", DateTime.UtcNow));
parameterList.Add(new SqlParameter("@TestId", testId));
parameterList.Add(new SqlParameter("@TestStatusId", 3));
SqlParameter[] parameters = parameterList.ToArray();
var test = await db.Database.SqlQuery<Test>(sql, parameters).FirstOrDefaultAsync();
我有建议“为什么不在EF上下文中映射SP?” 但是,当我对此进行研究时,我发现如何做到这一点还不清楚。首先,我看到那里有一个nuget包:
http://www.nuget.org/packages/EntityFramework.CodeFirstStoreFunctions/
但是我不清楚。这是唯一的方法还是有所改变。我在Internet和SO上看到过帖子,但似乎情况正在发生变化,因此我认为这些内容可能已过时。
有人可以告诉我EF 6.1.1现在是如何完成的。请注意,我正在寻找仅使用Microsoft工具进行此操作的正式方法。另请注意,我使用的是Code First,因此无法使用edmx映射器等。
官方不支持。您可以使用由EF团队成员之一编写的附加组件,如该帖子中所链接的那样,仅此而已。
您还可以使用工具来完成这项工作(例如LLBLGen Pro,它可以在DbContext类中为您创建proc调用映射:http ://www.llblgen.com/documentation/4.2/Entity%20Framework/hh_goto.htm# V56 / CodeFirstSupport.htm),但您不能这样做,因为您只在寻找官方工具。我会说:官方工具在EF方面涉及很多领域,因此,如果您仅在为此和与EF相关的其他事情上寻找官方工具,那么您将陷入困境(实际上)。 )
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句