简单Demo 使用Code Fisrt步骤

使用Code Fisrt步骤

1、开启VS,创建控制台项目:CodeFirstDemo1

     简单Demo 使用Code Fisrt步骤_第1张图片
2、利用NuGet引进 Entity Framework类库

     简单Demo 使用Code Fisrt步骤_第2张图片
         图住:右击项目名称,在弹出的选项菜单选择【管理NuGet程序包(N)】
       简单Demo 使用Code Fisrt步骤_第3张图片
       图注:在选择或搜索EntityFramework,当前最新版本为6.3.1

       简单Demo 使用Code Fisrt步骤_第4张图片
       图注:添加成功后会多3个引用,和一个packages.config文件,App.config内容也发生了相应的变化
       简单Demo 使用Code Fisrt步骤_第5张图片
3、添加实体类文件(POCO)    Category.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeFirstDemo1
{
    class Category
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }

    }
}

4、在配置文件中创建数据库连接字符串,<configuration>节点内加,其中Model1 需要在DbContext用到,用来关联数据库,CodeFirstSample为数据库名称(不需要在SQL Server Management Studio中先建数据库)


     <connectionStrings>
          <add name="Model1" connectionString="data source=.;initial catalog=CodeFirstSample;persist security info=True;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
     </connectionStrings>

 

5、添加上下文类CodeFirstContext继承DbContext(需引入命名空间 using System.Data.Entity;),名字随意,建议末尾加Context  

using System;
using System.Collections.Generic;
using System.Data.Entity;//
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeFirstDemo1
{
    class CodeFirstContext : DbContext
    {
        public DbSet<Category> Categories { get; set; }

        public CodeFirstContext()
            : base("name=Model1")//配置文件中的数据库连接字符串名称Model1
        {

        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //在这里写映射到数据库表和字段的规则,不写为EF默认
        }
    }
}

6、访问(操作)实体类,编辑Program类  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeFirstDemo1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var context = new CodeFirstContext())
            {
                //添加一个分类
                var category = new Category { Name = "水果", Description = "水果分类的描述。" };
                context.Categories.Add(category);
                context.SaveChanges();

                //
                var q = from c in context.Categories
                        select c;
                foreach (var item in q)
                {
                    Console.WriteLine("{0} {1} {2}", item.Id, item.Name, item.Description);
                }
                Console.ReadKey();
            }            
        }
    }
}

7、试运行,结果
    简单Demo 使用Code Fisrt步骤_第6张图片

    简单Demo 使用Code Fisrt步骤_第7张图片
    图注:数据库和表,字段都生成成功,到这就完成了一次最小限度的完整的Code Fisrt示例。

 

后续问题

 

 

如上图的表字段,Name的类型长度是max,表的名称我不想叫Categories,如果我再加个子表如 Product,该如何用Code First实现呢?

这个时候就需要用到什么有备注的地方OnModelCreating  这个方法内写映射规则了。

 

你可能感兴趣的:(code)