簡體   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