netmvc存儲過程
⑴ 我是學.NET的,開發一套B/S的進銷存系統都需要掌握哪些知識點
一個軟體系統的構造,首先要清楚需求,即使進銷存滿街泛濫的年代,一樣要弄清需求。然後是技術實現,既然你學.NET,可以看看asp.net mvc2,前台頁面可以ajax js庫設計的很漂亮的,資料庫方面,可以參考ORM框架進行,至少可以隔離sql語句的書寫,而且能以面向對象的方式操作數據對象且有些ORM框架支持多資料庫。當然,資料庫的設計還是要掌握的,畢竟系統在運行以後,進行調優的時候,不只是調整代碼實現的問題,資料庫的優化也是很重要的。至於實現需求的過程中,又需要介面編程,分層架構,還需要設計模式的應用。其實軟體都一樣,麻雀雖小,五臟俱全,要做好軟體,很多知識點都需要的,不要急,一項一項掌握吧。
⑵ .net MVC框架裡面怎麼創建一個在伺服器端持續運行的程序
1,如果是sql server資料庫,創建資料庫工作任務,配置相應時間運行存儲過程語句。2,採用時間控制項,設置間隔運行時間啟動運行程序
⑶ asp.net寫三層架構的代碼時,一般是先寫BLL的內容還先寫DAL的內容,他們分別放什麼
學ASP.NET都知道它的最經典的架構是三層架構,也是目前應用得最廣泛的一種架構.以前說起三層架構大家都知道MVC架構,這是html開發中用得比較多的,現在AJAX主要就是用這種架構。大家ASP.NET的三層是指數據訪問層,業務邏輯層和表示層,而且都知道數據訪問層是用來訪問數據的,業務邏輯層是用來處理一些系統的業務邏輯的,表示層就是把內容呈現出來給用戶,與用戶進行交互的。劃分三層的好處就是每一層都是獨立的,修改其中一層一般不會影響其他層的代碼,這樣就大大的方便了日後的維護和升級。它最大的缺點是架構和編碼都比較復雜,而且對性能的提高沒有任何幫助,反而還可能會降低執行效率。
有時候真的覺得三層編起來挺麻煩的,在ASP.NET 2.0里,訪問數據和顯示出來只要拖兩個控制項就可以了(AccessDataSource/SQLDatasource和GridView),幾分鍾一個頁面就出來了,而且還具備了修改中,刪除,分頁,排序等功能。而用三層架構就麻煩多了,先要寫數據訪問層的代碼,接著寫業務邏輯層的代碼(要調用數據層的方法),最後才是表示層,也就是頁面的設計,還有調用業務邏輯層的代碼讀取數據。(注意:表示層是絕對不會訪問數據層的內容,只能通過業務層。業務層在這里是連接它們的橋梁。所以說業務層是最重要的一層)既然這樣為什麼還要用三層呢?前面提到的一層架構的一個很大的問題就是前台和後台代碼沒有很好的分開,不利於分工,第二,不利於日後的維護和升級。如果是個人主頁或者是一些一個人完成的小系統用一層還是挺方面的。如果是一些比較大的系統,特別是企業級的應用,就非用三層甚至n層不可了。一般三層就很夠了,再劃分更多隻會增加設計和編碼的難度。
那到底怎麼去分層呢?怎麼樣分層就符合三層架構原則呢?這是很多剛入門的人經常問的問題。我翻了很多本案例書,可惜很多都是一層或者是兩層架構的,絕少三層的。後來研究了petshop4.0和下了一些國外的資料來看才開始對如何分層有點了解。我總結了一下主要有以下三種分層方式:
一:數據層不包含任何代碼,只有資料庫,還有相關的存儲過程。
這種模式下,數據層看起來就變得很簡單了。只包含你建立的資料庫,和一些存儲過程(注意是存儲過程)。其實這些存儲過程的建立也是相當復雜的(我以後會專門寫一篇這方面的文章),因為它們可以完成除數據訪問外的其他一些很強大的功能,如分頁,實現搜索演算法等。數據訪問的邏輯就都放在業務層,當然業務層還包含其他一些邏輯代碼。我們來看一個示例,假設資料庫里有一個表BOOKS(書),建立一個存儲過程GetAllBooks,用來讀取書的信息,這樣在業務層里編一個方法GetBookS()和一個公用資料庫訪問類,GetBooks()就通過資料庫訪問類打開連接,執行在存儲過程,返回數據(返回類型可以是DataTable,DataSet,DataReader或者實體類)。業務層單獨編譯成一個或者幾個DLL文件。接著就是表示層了,表示層通過調用GetBookS()返回數據綁定在相關的控制項里。務層的方法都是在表示層調用。一般來說book.aspx和book.aspx.cs都是表示層的內容。所有前台的設計,相關控制項,數據緩存都是屬於表示層。
二:數據層還包含所有公共數據訪問代碼。
這種模式和前一種差別不大,主要是把數據訪問代碼六到數據層。這樣可以很方面實現對多資料庫的支持。業務邏輯層直接調用數據層的相關訪問數據的代碼,完全不必了解底層是什麼資料庫。其他和前一種沒什麼分別。
三:所有數據讀取都放在數據層。
這種模式下像前面所述的GetBooks()方法都是放在數據層,在業務層再定義一個GetBookS()方法以供表示層調用。這種模式下業務層不但不必了解底層是什麼資料庫,而且連資料庫的結構都不必了解了。這可以說是最標準的三層架構了,在Microsoft的PetShop 4.0里就是用這種模式。
以上就是我總結的一些內容,可能不是很准確,請大家多多指教。
⑷ 針對.NET軟體項目實施都需要掌握哪些知識
這個。。。這個。。。面積太大了點吧。。。必須具備的是面向對象思想和開發基礎語法,以及對常用的系統類庫了如指掌,比如text,xml,linq,data,io,drawing,collection等,當然,不知道的可以查msdn,另外,就是資料庫方面,必須會表、視圖、臨時表、存儲過程、觸發器的操作,以及MSSQL中的語法,比如if,case等。這些都是基本功了。
網站開發,javascript 、 jquery、CSS+DIV是必不可少的。如果想要緊跟時代步伐,那麼HTML5就顯得非常重要了。
如果是BS模式的,最起碼的,你得知道webForm怎麼寫,然後UserControl怎麼寫,是使用什麼架構去寫,比如mvc,三層這些。另外,因為網站畢竟是要給用戶最高體驗的,而可能因為網路帶寬影響網站的載入速度,那麼,就需要知道什麼時候使用input標記,什麼時候使用.net控制項。另外,就是需要了解webservice怎麼去寫,什麼時候用。一般處理程序(*.ashx)怎麼用,XML配置文件怎麼寫,怎麼用,怎麼與程序銜接。還有,就是文件上傳,圖表啥的了。圖表可以使用flex開發。文件上傳,就要看程序了。如果是單獨的文件上傳,吶直接用.net控制項就行了,否則,可能需要自己寫一些代碼來負責文件上傳。
如果是CS模式,同樣,最起碼需要知道怎麼去做Winform,並且知道他們之間怎麼調用。如果需要使用Windows API,也需要適當的了解一些。多線程,這個是必須要知道的,而且一定要在合適的時間使用,不然就事倍功半了。
針對於CS的硬體開發的話,必須知道硬體二次開發的介面,如果是COM口的數據,也一定要知道怎麼操作COM口的數據。
這對於CS的網路編程,自然TCP和UDP,線程是必須掌握的。
針對於付費類的,一定要知道付費介面提供商的代碼使用規則,比如淘寶的開放代碼。
對於微博、APP這些,也都是有自己的開放代碼的。可以到像、sina、163、qq等網站去找找。
對於數據方面,可以使用.NET的數據控制項,gridview這些。盡可能的使用數據綁定,這樣處理起來會比較快。
如果是手機開發啊,自然,wm、iphone、安卓這三個系統都需要了解,而且要了解怎麼開發的。.NET只能開發WM和WINDOWSPHONE的。
最後,發布。發布的時候一定要注意freamwork版本。
如果是團隊,那麼VSS或者TFS都必須知道是什麼,怎麼去用。如果需要做流程的東西,那麼visio也一定要知道一些。
這個夠詳細了吧
⑸ ASP.NET MVC3 利用存儲過程實現查詢功能的問題
錯誤的數值當然 會報異常了呀
上面的方法輸入的是錯誤的值時,返回的ds是空值嗎 ,是的
if (strParams != null)
{
for (int i = 0; i < strParams.Length; i++)
MyAd.SelectCommand.Parameters.AddWithValue(strParams[i], strValues[i]); //設置存儲過程 的參數和值
}
SqlParameter rst = MyAd.SelectCommand.Parameters.Add("@result", SqlDbType.Int);
rst.Direction = ParameterDirection.Output; //存儲過程的 output參數 @result
MyAd.Fill(ds, "newtable"); //把結果集放到 ds中去
⑹ ASP .NET MVC5 如何通過資料庫生成model
可以使用Entity Framework的Db First模式生成model。
第一步:創建
ASP .NET MVC項目
第二步:創建實體模型
在項目上右擊 添加新建項目→Ado.Net實體數據模型
如下圖所示:
⑺ C#.NET MVC 多條件搜索的問題
直接寫存儲過程,如果不關心效率也有不用拼接字元串的方法:
假定記錄都有一個公共欄位,設計兩個集合方法:求交和求並,對每個條件求它的集合,又因為多條件搜索都可以化成每個單條件的交集和並集操作,因此可以求出任何復雜的搜索模式
⑻ .net mvc 怎樣調用 存儲過程詳細點最好有例子
由於問題主要是存儲過程,以下例子的架構會直接點,Controller直接依賴SqlRepository,而未用到依賴注入。。
所以,架構方面千萬不要參考了這個例子。。
費話不多說,先講資料庫。舉例的資料庫(SQLServer 2008)名為TestDB01,僅有的一張表表名為UserInfo,表有皆不可為空的三個欄位,分別為UserID(int),UserName(nvarchar(50)),UserAge(smallint),其有一條記錄為UserID:1,UserName:Lcng,UserAge22。
接下來是寫在資料庫里的存儲過程,如下:
USE [TestDB01]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[myProcere]
@parameter1 int
AS
BEGIN
SET NOCOUNT ON;
SELECT * from [UserInfo] where [UserInfo].UserID = @parameter1
END
希望我復制粘貼時沒有出錯,當然,如果你對存儲過程熟悉的話你會發現我的錯誤,如果有的話。。
存儲過程表達的意思在此就不說了(想你應該熟悉存儲過程),如果需要,請補充問題。。
接下來就是Visual Studio 2010里的工作了。
新建一個空ASP.NET MVC 2項目,我取的項目名是UsingProcereInMVC,往項目里加一個名為Repositories的文件夾,此文件夾用來存放對資料庫的操作的類,一會兒會講,先看Models文件夾。
往Models文件夾里加一個名叫Person的類,Person類如下:
public class Person
{
public string PersonName { get; set; }
public short PersonAge { get; set; }
}
現在回到Repositories文件夾,往這個文件夾里加一個名叫SqlRepository的類,SqlRepository類如下:
public class SqlRepository
{
private List<Person> personList = new List<Person>();
public List<Person> PersonList
{
get
{
return personList;
}
}
public SqlRepository(string connectionString)
{
SqlConnection sqlconn = new SqlConnection(connectionString);
SqlCommand sqlcmd = new SqlCommand("myProcere", sqlconn);
sqlcmd.CommandType = CommandType.StoredProcere;
SqlDataReader rd;
try
{
sqlconn.Open();
sqlcmd.Parameters.Add(new SqlParameter("@parameter1", SqlDbType.Int));
sqlcmd.Parameters["@parameter1"].Value = 1;
rd = sqlcmd.ExecuteReader();
while (rd.Read())
{
personList.Add(new Person { PersonAge = (short)rd[2], PersonName = rd[1].ToString() });
}
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
sqlconn.Close();
}
}
同樣,希望我的復制粘貼沒有出錯。。
希望對於此類需要講解的只有以下這些內容,如
SqlCommand sqlcmd = new SqlCommand("myProcere", sqlconn);
sqlcmd.CommandType = CommandType.StoredProcere;
如果你用過ASP.NET WebForm,那麼對這兩條中的第一條語句你應該很熟悉,相對於ASP.NET WebForm,SqlCommand sqlcmd = new SqlCommand("myProcere", sqlconn);只是把第一個參數由原來的SQL語句換成了定義在資料庫里的存儲過程的名字;而第二條語句只是告訴sqlcmd它的命令類型而已。
當然,我還要說的是,其實這根本就是在ASP.NET WebForm可以用的用法,只是我把它放到ASP.NET MVC里舉例子了而已。。其實我們完全可以或說應當使用LINQ。。
還有兩條要說的語句是
sqlcmd.Parameters.Add(new SqlParameter("@parameter1",SqlDbType.Int));
sqlcmd.Parameters["@parameter1"].Value = 1;
要說的是@parameter1就是定義存儲過程里的那個參數,這里給這個參數的值為1,它完全可以根據你的需要而變。
接著看Controllers里的HomeController,它唯一的一個action就是Index(),定義如下
public ViewResult Index()
{
SqlRepository sr = new SqlRepository(WebConfigurationManager.ConnectionStrings["connectionString01"].ConnectionString);
return View(sr.PersonList);
}
如果對此有不明之處,請補充問題。。
最後是強類型(類型為List<UsingProcereInMVC.Models.Person>)的名叫Index的View,主要內容如下
<body>
<div>
<% foreach (var v in Model)
{ %>
Name:<%: v.PersonName %><br />
Age: <%: v.PersonAge %><br />
<% } %>
</div>
</body>
如果你按著這個例子做,顯示的結果將會是
Name:Lc
Age: 22
祝你好運(當然,這條是不會顯示的)。。
希望可以幫到你,如果還有疑問,請補充問題。
如果這對你有幫助,請標為最佳答案。
⑼ 在ASP.NET MVC中如何使用EF調用存儲過程
要用EF調用存儲過程,必須將這個存儲過程拖拽到EF對應的文件中來,這樣這個存儲過程就自動變成了一個函數。例如存儲p_GetProct。那麼使用的時候
using(DataContext
oDataContext=new
DataContext())//EF對應的上下文對象
{
oDataContext.p_GetProct();//直接通過這樣調用就行了。當然,如果存儲過程有參數,也可以通過這個函數傳遞參數。
}
希望可以幫到你。
⑽ MVC中通過.edmx調用存儲過程處理返回值
int r=0;
System.Data.Objects.ObjectParameter result = new System.Data.Objects.ObjectParameter("Result",System.Data.DbType.Int32);
movies.Movies_Create(Title, Convert.ToDateTime("ReleaseDate"), Genres_List, Price, Rating, result);
r=(int)result.Value;//r就是你所需要的返回值