从实体框架6.1.3代码优先调用存储过程

时间:2016-12-25 11:52:42

标签: c# entity-framework ef-code-first entity-framework-6

请考虑此代码 - 我创建了一个存储过程:

CREATE PROCEDURE InsertRegion
    @RegionID int,
    @RegionDesc nvarchar(50)
AS
BEGIN
    INSERT INTO [dbo].[Region]
    VALUES (@RegionID, @RegionDesc)
END

我想从我的存储库类调用此过程:

 using (Model1 ent = new Models.Model1())
 {
     List<SqlParameter> parameters = new List<SqlParameter>();
     parameters.Add(new SqlParameter("RegionID", 100));
     parameters.Add(new SqlParameter("RegionDesc", "Nima"));

     ent.Database.SqlQuery<Region>("exec InsertRegion", parameters.ToArray());
  }

但没有任何反应。我将最后一行更改为:

ent.Database.SqlQuery<Region>("exec InsertRegion @RegionID, @RegionDesc ", parameters.ToArray());

但同样没有任何反应。

问题出在哪里?

由于

1 个答案:

答案 0 :(得分:1)

不使用exec时使用

using (Model1 ent = new Models.Model1())
{
    var regionID= new SqlParameter("@RegionID", 100);
    var regionDesc= new SqlParameter("@RegionDesc", "Nima");

    ent.Database.SqlQuery<Region>("InsertRegion @RegionID ,@RegionDesc", regionID ,regionDesc);
}

但在你的sp中没有返回任何记录,所以你也可以使用它:

using (Model1 ent = new Models.Model1())
{
    var regionID= new SqlParameter("@RegionID", 100);
    var regionDesc= new SqlParameter("@RegionDesc", "Nima");

    ent.Database.ExecuteSqlCommand("InsertRegion @RegionID ,@RegionDesc", regionID ,regionDesc);
}