码迷,mamicode.com
首页 > 其他好文 > 详细

Entity Framework笔记(一)

时间:2015-08-27 22:49:17      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

最近在看MVC方面的资料,看了几个教程都在使用Entity Framework做数据持久化。之前也听说过这个东西,在微软的网站上看过一个演示视频,但都没怎么去仔细研究。MVC的东西太庞大了,先慢慢熟悉着。但可以从其中的一个部分入手,先学习Entity FrameWork。当作笔记,哪天翻出来温故。

简单说,EF是一个ORM解决方案,是微软出的东西。这里,主要记录如何使用,至于它的来龙去脉,可以网上搜搜。现在就开始用VS2010创建Console项目,并且使用EF作为和数据库打交道的工具。VS2010中要使用EF框架的话,得先安装插件:NuGet,点击下面连接https://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c ,下载后安装即可。

新建Console项目,命名EFConsoleDemo。右键项目,此时看到菜单上有“管理NuGet程序包”项,点击后在弹出的窗体上搜索Entity Famework,点后面的安装。中间会弹出是否同意安装,点“我同意”完成即可。

技术分享

              右键项目,点击管理“NuGet程序包”

技术分享

    搜索到Entity Framework后,点后面安装(如未安装,绿色打勾的地方会有安装按钮)

此时我们看到项目中会多出一个pakages.config文件,展开引用,会发现多出几个EntityFramework相关的引用。这里记录的是EF的Code First模式的使用方。接下来配置数据库连接字符串,在App.config文件中添加如下配置:

<connectionStrings>
    <add name="UserDal" providerName="System.Data.SqlClient" connectionString="Data Source = localhost; Initial Catalog = TestDb; Integrated Security = true"/>
  </connectionStrings>

  这里需要注意连接字符串的name属性,后面创建类的时候需要和这里的名字保持一致。接下来创建类,这里以一个简单的用户管理为例。假设用户表需要ID,UserName,UserPwd,Email,Tel字段,则需要创建一个User类,直接贴代码。ID上的[Key]属性表示该属性在数据库表中映射的字段是主键。

   public class Users
    {
        [Key]
        public int UserId { get; set; }

        public string UserName { get; set; }

        public string UserPwd { get; set; }

        public string Email { get; set; }

        public string Tel { get; set; }
    }

接下来是重点,创建和数据库打交道的代码了。注意这里的类名UserDal,需要和App.config中连接字符串的name属性一致才可以。重写OnModelCreating方法,将上面的User类映射到数据库中的T_Users表中。

    public class UserDal : DbContext
    {
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Users>().ToTable("T_Users");
            base.OnModelCreating(modelBuilder);
        }

        public DbSet<Users> users { get; set; }
    }

回到项目中的Program.cs文件中,为User类创建实例,并将实例值插入数据库。

  class Program
    {
        static void Main(string[] args)
        {
            OperationClass operation = new OperationClass();
            Users user = operation.InitUser();
            operation.SaveUser(user);
            operation.DisplayUsers();
            Console.ReadKey();
        }
    }

    public class OperationClass
    {
        public Users InitUser()
        {
            string userName = string.Empty;
            string userPwd = string.Empty;
            string Email = string.Empty;
            string Tel = string.Empty;
            Users user = new Users();
            Console.WriteLine("Input UserName:");
            userName = Console.ReadLine();
            Console.WriteLine("Input UserPwd");
            userPwd = Console.ReadLine();
            Console.WriteLine("Input UserEmail");
            Email = Console.ReadLine();
            Console.WriteLine("Input UserTel");
            Tel = Console.ReadLine();

            user.UserName = userName;
            user.UserPwd = userPwd;
            user.Email = Email;
            user.Tel = Tel;
            return user;
        }

        public void SaveUser(Users user)
        {
            UserDal userDal = new UserDal();
            userDal.users.Add(user);
            userDal.SaveChanges();
        }

        public void DisplayUsers()
        {
            Console.WriteLine("Display All Users In The System:");
            Console.WriteLine("***************************************************");
            UserDal userDal = new UserDal();
            List<Users> users = userDal.users.ToList();
            foreach (Users item in users)
            {
                Console.WriteLine("UserName:  {0}", item.UserName);
                Console.WriteLine("UserPwd:   {0}", item.UserPwd);
                Console.WriteLine("UserEmail: {0}", item.Email);
                Console.WriteLine("UserTel:   {0}", item.Tel);
                Console.WriteLine("*****------**********---------********");
            }
            Console.WriteLine("All Users Displayed.");
        }
    }

运行项目。初次运行时,输入数据后,EF会自动在TestDb中创建T_Users表,并将输入的数据插入数据库中。Display方法中,调用了UserDal中users属性的ToList方法,获取数据表中的全部数据。因此,第二次输入数据时,会将第二条数据插入表中,并输出两条数据来。至此,在VS 2010中使用EF已经成功。为我们带来了些什么方便?首先,不用在数据库中创建表(或写sql脚本生成);不需要写插入语句和查询语句了。框架为我们完成了对象和数据的关系映射。但是,问题来了,我们在项目中,不可能只用到插入和查询所有数据这两种简单的操作。我们还需要删除,修改,按条件查询等等复杂的数据库操作呢。

待续.....

 

Entity Framework笔记(一)

标签:

原文地址:http://www.cnblogs.com/gxwang/p/4762264.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!