麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色域tv | 羞羞视频免费网站 | 国产精品久久久免费观看 | 亚洲91精品 | 国产精品自拍99 | 亚洲国产美女视频 | 亚欧美一区二区 | 亚洲福利在线视频 | 色综合久久99 | 日本视频免费看 | 国产精品视频六区 | 在线观看福利网站 | 久久久久免费精品国产小说色大师 | 欧美一级免费视频 | 欧美一级做性受免费大片免费 | 午夜人体| 国产精品热 | 国产精品久久久久一区二区 | 黄色毛片一级 | 红桃一区 | 亚洲网站免费看 | 精品一区二区久久久久久按摩 | 依人在线视频 | 午夜精品成人 | 成人毛片在线免费观看 | 99精品在线免费 | 亚洲精品久久久久久久久久久 | asian裸体佳人pics | 国产精品一区二区三区99 | 国产在线久 | 国产精品久久久久久久久久iiiii | 毛片在线播放视频 | 免费色片 | xxxxxx打针视频vk | 国产一区二区三区在线观看视频 | 久色一区| 国产免费高清在线视频 | 国产91一区 | 精品一区二区免费 | 青青草免费观看完整版高清 | 18pao国产成人免费视频 |