在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(); }

 

好了这次就说到这里··如有错误欢迎大家指正~!!!

 

转载于:https://www.cnblogs.com/lishun1005/p/4057059.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值