在MVC3中使用code first生成數據局庫並操作數據庫


1.建立Users和UserInfos兩個實體類 對應的是數據庫中的表

 public class User { //類名+Id(User+Id)組成的字符串在數據庫表中會設置該字段是主鍵且是按1的增量增長 public int UserId { get; set; } public string UserName { get; set; } }

UserInfos表

 public class UserInfo { public int UserInfoId { get; set; } public string UserAddr { get; set; } public int UserTel { get; set; } public char Sex { get; set; } public int UserPost { get; set; } //這里表之間的聯系,User實體與UserInfo,會把User表的主鍵生成對應生成UserInfo表外鍵 public virtual User User { get; set; } }

自動生成數據庫表:

2.建立一個操作數據庫的實體類EntityFrameworkModel,必須繼承DbContext(通過此類來操作數據庫),該類里面的 Users和UserInfos就是在數據庫中生成的表

//管理數據實體(對應數據庫中的表);通過這個類可以完成對數據增刪改查 public class EntityFrameworkModel : DbContext { //根據這里字段名生成是數據庫的表名 public DbSet<User> Users { get; set; } public DbSet<UserInfo> UserInfos { get; set; } }


3.在配置文件中添加連接數據庫的的字符串     注:配置文件的 name值 必須與 操作數據庫的實體類的類名 一致  

 <connectionStrings> <!--注意這里的name的值必須與管理數據實體類名一樣,否則會無法生成數據庫--> <!--連接字符串connectionString的database的值可任意,該值就是對應數據庫名--> <add providerName="System.Data.SqlClient" name="EntityFrameworkModel" connectionString="Server=.;Database=EntiyFrameWork;Integrated Security=true"/> </connectionStrings>

上面的操作就可以生成一個無數據的數據庫了 當然你也可以在代碼實現在數據庫生成的時候給數據庫加載數據

創建一個加載數據的LoadData類(這里我就每個表添加兩條數據了)

 //這里要繼承 :DropCreateDatabaseIfModelChanges<EntityFrameworkModel>類, //當模型類結構改變的時候就會重新加載數據(這里的模型類就是User UserInfo) public class LoadData:DropCreateDatabaseIfModelChanges<EntityFrameworkModel> { protected override void Seed(EntityFrameworkModel context) { //創建User集合 List<User> users = new List<User>{ new User(){UserName="張三"}, new User(){UserName="金三胖"} }; //創建UserInfo集合 //User=users.Single(u=>u.UserName=="張三") 用linq表達式添加數據(實際是把user表的id添加到userinfo中) List<UserInfo> userlist = new List<UserInfo> { new UserInfo(){ Sex='n', User=users.Single(u=>u.UserName=="張三"), UserAddr="天國", UserTel=119, UserPost=11}, new UserInfo(){ Sex='s', User=users.Single(u=>u.UserName=="金三胖"), UserAddr="天國", UserTel=119, UserPost=22}, }; //把數據添加到管理數據實體中,通過這個實體吧數據加載到數據庫中 foreach(UserInfo u in userlist){ context.UserInfos.Add(u); } } }

注意:還需在全局文件中的Application_Start()加上一句加載數據庫數據的代碼

protected void Application_Start() { //當網站第一次運行時就加載數據庫數據 System.Data.Entity.Database.SetInitializer(new Entity_Framework的使用.Models.LoadData());//向數據庫添加數據 //System.Data.Entity.Database.SetInitializer(new OdeToFoodDBInitializer());  AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); }


這樣當數據庫生成的時候就可以加載數據了

在控制器中操作數據庫就可以了,,這樣就不用通過編寫大量的sql語句來查詢數據了

public ActionResult Index() { int count = ef.Users.Count();//獲得User表總共有多少條 List<User> u = ef.Users.ToList();//獲得User的全部數據; User user = ef.Users.FirstOrDefault(us => us.UserId == 1);//獲得id為1的數據 //ef.Users.Remove(new User(){ UserId=1});//刪除數據,這里傳通過一個User實體來刪除數據 //ef.SaveChanges();執行刪除 //ef.Users.Add(new User() { UserName = "新增數據" });//添加數據,這里傳通過一個User實體來添加數據 //ef.SaveChanges();執行添加 //更新數據 首先要查詢該條數據 然后更新該實體的值 最后執行mbsc.SaveChanges();就可以更新成功了 //user.UserName = "更新了";//把剛剛查詢出的數據更改名字 //ef.SaveChanges();return View(); }

 

好了這次就說到這里··如有錯誤歡迎大家指正~!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM