浅谈EF框架(二)--DataBaseFirst

来源:互联网 发布:我们爱讲冷笑话软件 编辑:程序博客网 时间:2024/05/16 07:21

 EF框架支持三种开发模型:DatabaseFirst、 ModelFirst和CodeFirst。

  这三种开发模式区如下图:

 

 

 

 每个模式有每个模型的好处,根据自己实际的需求来选择。

 今天主要想用代码来演示一下如何用---DatabaseFirst

1、首先创建一个数据库(可以自己直接在数据库创建,也可以通过vs创建)。

      (1)打开vs2012--视图--服务器资源管理器

      (2)右键单击“数据库连接”--“添加连接”

                    

             (3)根据已安装的数据库,比如我安装是sqlserver2008,输入DBFirst.Test作为数据库名称,点击确定创建它

 

                 

 

     (4)此时到数据库里看,就有了DBFirst.Test数据库了,将一下sql语句复制到新建查询中,再执行就行。

        CREATE TABLE [dbo].[Blogs] (
        [BlogId] INT IDENTITY (1, 1) NOT NULL,
        [Name] NVARCHAR (200) NULL,
        [Url]  NVARCHAR (200) NULL,
        CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC) );
     

      CREATE TABLE [dbo].[Posts] (
       [PostId] INT IDENTITY (1, 1) NOT NULL,
       [Title] NVARCHAR (200) NULL,
       [Content] NTEXT NULL,
       [BlogId] INT NOT NULL,
       CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
       CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [dbo].     [Blogs] ([BlogId]) ON DELETE CASCADE );

        

 

 

2、创建一个控制台应用程序

         

 

3、把数据库里的表映射成对象模型(表实体)

      (1)项目--添加新建项--数据--ADO.net实体数据模型--输入BloggingModel作为名称---选择“从数据库生成”

 

     

选择连接到在第一部分中创建的数据库,输入 BolgEntities作为连接字符串的名称,然后单击“下一步”

 

单击“表”旁边的复选框,导入所有表,然后单击“完

  

  反向工程处理完成后,新模型将添加到项目中并在实体框架设计器中打开以便查看。项目中还添加了一个 App.config 文件,其中含有数据库的连接详细信息。

   

      app.congfig的<connectionStrings>配置信息,到时把它复制到配置文件就行。

    

 

 

4、读写数据

    在控制台应用主函数里把这段代码复制进去,加个断点单步调试一下,看看这么跳转的。

  

        static void Main(string[] args)
        {
            using (var db=new BlogEntities())
            {
                //创建一个blog并且保存它
                Console.Write("Enter a name for a new Blog");
                var name = Console.ReadLine();

                var blogs = new blog { Name=name};
                db.blogs.Add(blogs);
                db.SaveChanges();

                //从数据中查询所有博客并且按名字排列
                var query = from b in db.blogs
                            orderby b.Name
                            select b;
                Console.WriteLine("All blogs in the database");
                foreach (var item in query)
                {
                    Console.WriteLine(item.Name);
                }

                Console.WriteLine("Press any key to exit");
                Console.ReadKey();

            }
           
        }

 

我这测到的运行结果:
  

   

 这个我仿照msdn上做的一个demo,虽然简单,但自己做一遍和调试一遍就是比看到感受深刻的多。

 

 

 

 

   

   

 

    

       

    

      

 

     

 

 

   

0 0