2017-06-06 25 views
1

我是mvc的新手,我試圖弄清楚如何連接到數據庫,調用存儲過程並顯示它返回的內容使用實體框架。我創建了一個文本框,它假設根據用戶輸入過濾顯示(即ID號)。在數據庫中有很多列需​​要顯示,所以如果可能的話,我寧願不爲我的模型中的每個列創建一個變量。我已經看到一個例子,他們使用模型作爲強類型的System.Data.DataTable,它的工作原理,但我遇到了一個問題,因爲視圖不允許兩個模型,因爲我無法使用我的文本框。如何調用存儲過程並顯示它在mvc 4中返回的內容而不使用EF

有誰知道這個怎麼做到的,並且能夠對此有所瞭解?

謝謝!

回答

0

嗨,我的建議是你可以使用Ado.net實體數據模型來執行存儲過程。這裏是如何做到這一點的完整的例子:http://www.c-sharpcorner.com/UploadFile/vendettamit/calling-an-stored-procedure-using-ado-net-entity-model/

而對於這個問題視圖不允許兩種模式,我們可以使用視圖模型的概念,並結合儘可能多的,因爲我們希望的模式。

例如:

Public class sampleviewmodel 
{ 
    public DataTable propertyname1{get;set;} 
    public yourtype propertyname2{get;set;} 

} 

MoreInfo:http://www.dotnettricks.com/learn/mvc/understanding-viewmodel-in-aspnet-mvc

希望以上信息對您有所幫助。

感謝

KARTHIK

0

下面是一個例子,你如何可以直接調用存儲過程,而不先導入實體框架中的存儲過程。在通話之後放置一個斷點以查看返回的內容。當然,在commandText中更改存儲過程名稱。您也可以通過其他方式打開數據庫連接。你可能已經在你的項目中使用DB,所以你會知道這一點。

using (YourDBContext db = new YourDBContext()) { 

    Common.DbConnection conn = db.Database.Connection; 
    ConnectionState initialState = conn.State; 

    if (initialState != ConnectionState.Open) { 
     conn.Open(); 
    } 


    using (Common.DbCommand cmd = conn.CreateCommand()) { 
     cmd.CommandText = "show master status"; 
     dynamic dr = cmd.ExecuteReader(); 
     int index = 0; 
     List<string> columns = new List<string>(); 
     for (index = 0; index <= dr.FieldCount - 1; index++) { 
      string columnName = dr.GetName(index); 
     } 
     if (dr.HasRows) { 
      while (dr.Read()) { 
       //' 
       //' 
      } 
     } 
     dr.Close(); 
     } 
    } 
+0

我能夠連接到數據庫並調用存儲過程,但它不讓我顯示它。我創建了一個帶有文本框的表單,用戶在文本框中輸入了它們的id,然後假設它將它作爲參數存儲在存儲過程中,但之後不會顯示任何表格。 – OiC

+0

好吧,放一個斷點,看看從數據庫返回什麼。 –

相關問題