繁体   English   中英

使用存储过程实体框架从表中获取列表

[英]get list from table using stored procedure entity framework

我在条件库中使用相同的存储过程来插入和获取数据。

存储过程

   ALTER PROCEDURE dbo.sp_SaveUserRole
    @company_name nvarchar(50)=null,
    @address nvarchar(250)=null,
    @mobileno int =0,
    @phoneno int=0,
    @faxno int=0,
    @email nvarchar(250)=null,
    @regno int=0,
    @establish_date datetime=null,
    @cond int=0

    AS
    if(@cond=1)
    begin
    insert into Company (company_name,address,mobileno,phoneno,faxno,regno,email,establish_date) values (@company_name,@address,@mobileno,@phoneno,@faxno,@regno,@email,@establish_date)
    end
    else if(@cond=2)
    begin
    select * from company where isactive = 'True';
    end

        RETURN

就像使用实体框架插入数据一样,我正在这样做-

public ActionResult SaveRole(CompanyModel cmp)
    {
        var company_name = cmp.Company_Name;
        var regno = cmp.regNo;
        var mobileno = cmp.mobileNo;
        var phoneno = cmp.phoneNo;
        var establish_date = cmp.establish_Date;
        var email = cmp.emaiL;
        var address = cmp.Address;
        var faxno = cmp.faxNo;
        db.sp_SaveUserRole(company_name, address, mobileno, phoneno, faxno, email, regno, establish_date,1);
        return Json(new { success = true });

注意:这里的条件是1,所以它会插入数据过程。

尝试获取列表-

 var list = db.sp_SaveUserRole("", "", 0, 0, 0, "", 0, null, 2).ToList();

我尝试了这种从表中获取数据的方法,在该表中我必须将必要的参数传递给此过程调用。 尽管我只想将此程序转到第二条件,但我已经提到了。

因此,仅对于第二种条件,如何在不传递参数的情况下修改此过程?

与其使用存储过程,不如将您的公司表添加为edmx中的实体并通过代码访问它。

这样,无需将@ Cont = 2传递给存储的proc,而可以使用LINQ来访问所需的数据,因为SQL看起来非常基础。

然后,您可以从存储的proc中删除那条SQL,因为插入和选择不正确。

例如

// For insert
if (cont == 1)
{
   // Call your stored proc here

   // or if you add the company table to EF you can use the Insert use the Add 
   // e.g. Rough Example
   _yourEntities.Companies.Add(cmp);

   // Update the DB
   _yourEntities.SaveChanges();
}
else
{
   var companies = _yourEntities.Companies.Where(c => c.isactive == 'True');
}

如果不是这个解决方案,我仍然希望将存储的过程分成两部分以使生活变得轻松。

理想情况下,尽管在使用Entity Framework并希望从单个表中进行插入和选择时,将Company表作为实体添加到EF中时,您可以免费获得此功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM