2014-04-02 39 views
1

我正在使用相同的存儲過程插入和提取條件庫上的數據。使用存儲過程實體框架從表中獲取列表

存儲程序 -

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(); 

我試圖從表中,在那裏我有必要參數傳遞給這個過程調用獲取數據的這種方式。雖然我只想在這裏提到的第二種情況下使用這個程序。

因此只適用於第二種情況如何修改此過程而不傳遞參數?

+1

一個名爲「sp_SaveUserRole」的存儲過程,但在nondescript參數有一些非描述值時返回'company'表中的列表沒有任何意義。 –

回答

1

而不是使用存儲過程,我會將您的公司表作爲實體添加到您的edmx中並在代碼中訪問它。

通過這種方式,而不是將@ Cont = 2傳遞給存儲過程,您可以使用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'); 
} 

如果此解決方案是不是一種選擇,我仍然會着眼於存儲的特效分成兩個讓生活輕鬆。

理想情況下,雖然您在使用實體框架時希望插入並從單個表中進行選擇,但當您將公司表作爲實體添加到EF中時,可以免費獲得此功能。