//获取一条数据
using (var context = new Context())
{
    var savedPeople = context.People;
    if (savedPeople.Any())//如果源序列包含任何元素,则为 true;否则为 false 也就是如果表中有一条记录
    {
       var person = savedPeople.First();//取得第一条
       string name = person.FirstName;//取得数据
    }
}



 


       如果要获取某一条



var personId = 1;
 var p2 = context.People.Find(personId);//获取要删除的记录 通过主键ID



iOS framework 可以改名吗_iOS framework 可以改名吗



 



       上面我们既然可以拿到一条数据,那么下面我们就可以修改这条数据了,比如我们要将firstName修改



//修改一条记录
            using (var context = new Context())
            {
                var savedPeople = context.People;
                if (savedPeople.Any())//如果源序列包含任何元素,则为 true;否则为 false 也就是如果表中有一条记录
                {
                    var person = savedPeople.First();//取得第一条
                    person.FirstName = "www.bamn.cn";//修改名字
                    person.LastName = "Benson";
                    context.SaveChanges();
                }
            }



 



iOS framework 可以改名吗_数据_02



 



    然后就是删除一条记录了



    删除一条记录,其实非常简单的,上面我们已经可以根据ID获取一条记录了,那么要删除这条记录,只需要获取这条交流 然后调用上下文context中的Remove方法就可以删除这条记录了,但是有一条要注意,就是删除了要记得SaveChanges喔。。



 



//删除一条记录
using (var context = new Context())
{
     var personId = 2;
    var person = context.People.Find(personId);//获取要删除的记录 通过主键ID
    if (person != null)
    {
       context.People.Remove(person);
       context.SaveChanges();
    }
}



 



------------------------------------------------------------------------------



好了,上一拍里面我们基本实现了对数据库的创建 新增 查询 修改 删除,但是我们一直都是只对一张表进行操作,那就是person表,我们的数据结构一直都没有变化,但是这个肯定是不合逻辑的,我们肯定需要其他的表,或者要修改已经有的表,这个时候我们操作发现会报错,首先我们添加一个公司的类



public class Company
    {
        public int CompanyId { get; set; }
        public string Name { get; set; }
    }



 



 很简单,只有一个主键 和一个名称



 然后在上下文context里面添加一个dataset



 public DbSet<Company> Companies { get; set; }



 



 

iOS framework 可以改名吗_数据_03


 


这样修改后,当我们运行我们的程序的时候,会报下面的错误


 


“System.InvalidOperationException”类型的未经处理的异常在 EntityFramework.dll 中发生 

 

 


 这个时候,我们需要使用另外的一种方法来重新构建我们的数据结构


定义一个Initializer类DropCreateDatabaseIfModelChanges<Context>这是一个泛型类


然后重写seed因子方法


protected override void Seed(Context context)
        {
            context.Companies.Add(new Company
            {
                Name = "My company"
            });
        }


 


在这个方法里面,我们添加一条记录到表了,


这个seed方发挥在执行完本来的操作后才会触发的


当然我们会有更好的方法来处理这个结构改变的问题,我们以后的课程会学习这个问题的...


执行完后,代码不会报异常了,而且也添加了一个新表companies


iOS framework 可以改名吗_数据结构与算法_04


 


本集全部代码


#region 第二节课


 


//获取一条数据
            //using (var context = new Context())
            //{
            //    var savedPeople = context.People;
            //    if (savedPeople.Any())//如果源序列包含任何元素,则为 true;否则为 false 也就是如果表中有一条记录
            //    {
            //        var person = savedPeople.First();//取得第一条
            //        string name = person.FirstName;//取得数据
 
            //        var personId = 1;
            //        var p2 = context.People.Find(personId);//获取要删除的记录 通过主键ID
            //    }
            //}
 
            //修改一条记录
            //using (var context = new Context())
            //{
            //    var savedPeople = context.People;
            //    if (savedPeople.Any())//如果源序列包含任何元素,则为 true;否则为 false 也就是如果表中有一条记录
            //    {
            //        var person = savedPeople.First();//取得第一条
            //        person.FirstName = "www.bamn.cn";//修改名字
            //        person.LastName = "Benson";
            //        context.SaveChanges();
            //    }
            //}
 
            //删除一条记录
            //using (var context = new Context())
            //{
            //    var personId = 2;
            //    var person = context.People.Find(personId);//获取要删除的记录 通过主键ID
            //    if (person != null)
            //    {
            //        context.People.Remove(person);
            //        context.SaveChanges();
            //    }
            //} 
            #endregion
 
            Database.SetInitializer(new Initializer());//取消数据库架构修改后 
 
            using (var context = new Context())
            {
               bool res = context.Database.CreateIfNotExists();
               //往数据库中添加数据
               var person = new Person
               {
                   FirstName = "John",
                   LastName = "Doe"
               };
               context.People.Add(person);
               context.SaveChanges();
 
               //获取数据
               var savedPeople = context.People;
               foreach (var p in savedPeople)
               {
                   Console.WriteLine("Last name:{0},first name:{1},id {2}",
                   p.LastName, p.FirstName, p.PersonId);
               }
            }
            Console.ReadKey();