国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET MVC+Entity Framework 4.1訪問數據庫

2024-07-21 02:48:13
字體:
來源:轉載
供稿:網友
asp.net MVC+Entity Framework 4.1訪問數據庫

Entity Framework 4.1支持代碼優先(code first)編程模式:即可以先創建模型類,然后通過配置在EF4.1下動態生成數據庫。

下面演示兩種情形:

1、代碼優先模式下,asp.net mvc數據訪問

2、傳統模式,先創建數據庫和表,配置連接字符串,再生成模型

第一種情況的步驟:

(1)使用空模板,創建ASP.NET MVC3.0(或4.0)項目,假定項目名:MVC_Student

注意:創建完項目后,項目會自動引用EF4.1

(2)在Model文件夾下,創建數據庫上下文類:StuDBContext

public class StuDBContext:DbContext { public StuDBContext() :base("DataConn") { }

public DbSet<StudentInfo> Students { get; set; } }

(3)創建域模型:StudentInfo

public classStudentInfo { public int ID { get; set; } public string StuNO { get; set; } public string StuName { get; set; } public string StuPhoto { get; set; } public DateTime StuBirthday { get; set; } public string StuAddress { get; set; } }

(4)在web.config中配置連接字符串(也可以不配置,EF自動檢查并使用SQL SERVER EXPRESS,此處我們指定服務器和數據庫)

<connectionStrings><!--<add name="StuDBContext" connectionString="server=(local);database=MyStudent;uid=(登錄賬戶);pwd=(登錄密碼)" providerName="System.Data.SqlClient"/>--><add name="DataConn" connectionString="server=(local);database=MyStudent;uid=(登錄賬戶);pwd=(登錄密碼)" providerName="System.Data.SqlClient"/></connectionStrings>

(5)生成項目,為第(6)步服務

(6)右擊“Controllers"文件夾,選擇”添加控制器“,如圖:

單擊確定后,會在Controllers文件夾下生成一個StudentController類,而且在Views文件夾下生成Student子文件夾,其中包含5個.cshtml文件,如圖:

(7)修改Global.asax.cs的默認路由:

routes.MapRoute( "Default", // 路由名稱 "{controller}/{action}/{id}", // 帶有參數的 URL new { controller = "Student", action = "Index", id = UrlParameter.Optional } // 參數默認值 );

(8)最后,單擊”調試“菜單,選擇”啟動調試“,或直接按F5.會看到如下效果:

(9)可以單擊”Create New"超鏈接,向數據庫添加一條記錄

(10)此時可以打開數據庫服務器,會發現自動創建了MyStudent的數據庫(對應連接字符串中的數據庫)和StudentInfoes表(是模型類名稱的復數形式,表中的各字段分別對應模型類中的屬性,此處要特別注意:ID屬性會自動對應表中的自增長主鍵列。

以上方法需要注意的地方:

(1)web.config中連接字符串,providerName要提供,否則報錯。

(2)模型的ID屬性是固定的, 要不就要用元數據聲明,EF4.1會自動將之映射為表的主鍵(自增長)。

(3)數據庫實體上下文名稱一般與連接字符串name屬性的值相同,但本文中不同(數據庫實體上下文是StuDBContext,連接字符串名稱:DataConn),如果相同,那么實體上下文類可以不提供構造函數。如果不相同,如本例中,可以為實體上下文添加構造函數,并調用父類構造函數,在base()中傳遞與實體上下文類名不同的連接字符串名稱(本例中時DataConn,如步驟(2)紅色標注)

________________________________________________________________________________________________________________________________________

下面演示第2種情形:先創建數據庫模式,然后生成模型

(1)在SQL SERVER 2005/2008服務器上創建數據庫MyStudent,并添加一張表StudentInfoes(也可以在VS中服務器資源管理器中操作)

表的結構如下;

(2)創建ASP.NET MVC3/4項目(使用空模板)

(3)在Models文件夾中添加實體上下文類:StuDBContext

public class StuDBContext:DbContext { public StuDBContext() : base("DataConn") { }

public DbSet<StudentInfo> Students { get; set; } }

(4)在Models文件夾中添加實體類:StudentInfo

public class StudentInfo { public int ID { get; set; } public string StuNO { get; set; } public string StuName { get; set; } public string StuPhoto { get; set; } public DateTime StuBirthday { get; set; } public string StuAddress { get; set; } }

(5)在web.config中配置連接字符串:

<connectionStrings><!--<add name="StuDBContext" connectionString="server=(local);database=MyStudent;uid=(登錄賬戶);pwd=(登錄密碼)" providerName="System.Data.SqlClient"/>--><add name="DataConn" connectionString="server=(local);database=MyStudent;uid=(登錄賬戶);pwd=(登錄密碼)" providerName="System.Data.SqlClient"/></connectionStrings>

(6)生成項目解決方案,為第(7)步服務

(7)在Controllers文件夾下添加StudentController類,如圖:

單擊添加后,會創建與第一種情形同樣的項目文件結構。如上面所示。

(8)修改路由:

routes.MapRoute( "Default", // 路由名稱 "{controller}/{action}/{id}", // 帶有參數的 URL new { controller = "Student", action = "Index", id = UrlParameter.Optional } // 參數默認值 );

(9)啟動調試,預覽效果如下:

對比兩種方式,有如下區別:自動生成數據庫表的字段類型可能與自定義的不一致。

無論是通過代碼生成數據庫,還是先創建數據庫,再創建模型,都需要了解他們之間的映射關系(即EF作為ORM框架的作用),你會發現EF4.1作為ORM框架,遵循很多約定(Convention),而ASP.NET MVC推崇的很重要的一條原則就是:約定先于配置,可謂不謀而合。

轉載自:http://blog.csdn.net/sdtsfhh/article/details/8141242


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汝南县| 天台县| 区。| 铜鼓县| 汝城县| 南郑县| 临猗县| 勐海县| 南京市| 奉化市| 永宁县| 两当县| 柳江县| 英德市| 南华县| 镇平县| 枞阳县| 和龙市| 东明县| 建宁县| 泰宁县| 和田市| 浦东新区| 重庆市| 英吉沙县| 寿宁县| 青浦区| 全椒县| 鄢陵县| 固始县| 南康市| 临澧县| 六安市| 运城市| 綦江县| 巴青县| 无极县| 五原县| 岳西县| 新邵县| 潜江市|