在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(); }
好了这次就说到这里··如有错误欢迎大家指正~!!!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。