ef601

Posted tanqurey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ef601相关的知识,希望对你有一定的参考价值。

1、简介

1) 架构介绍

技术图片

 

2、补充

1)模型设计器界面右键可调出模型浏览器

 

3、安装EF

1)通过Nuget包管理工具进行下载

打开Nuget包管理工具,搜索下载EntityFramework

将在引用处引入:

System.EntityFramework,

System.EntityFramework.SqlServer

2)EF5.0与6.x的内容分布:

技术图片

 

4.db First

开发前必须有完整的数据库设计作为依据

 

确定所生成对象名称的单复数形式 是否勾选

如果勾选,所生成的数据库操作对象都会带复数

技术图片

1)使用dbFirst的设计流程

①首先设置好数据库,包括关联,外键等等

②包管理工具中安装EF

③项目右键添加——数据——ADO.NET实体数据模型——从数据库生成

根据提示进行操作,选择所有需要的表

④系统生成.context.cs文件,内容即为EF数据操作类

2)使用EF数据库操作类操作数据库

①向表中插入数据

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

namespace DbFirst1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (EFDemoEntities db = new EFDemoEntities())
            {
                db.Student.Add(new Student()
                {
                    StuName="Michael",
                    EnterDate=DateTime.Now,
                    ClassInfo_Id=2

                });
                db.SaveChanges();
            }

            Console.WriteLine("完成动作");
            Console.ReadLine();
        }
    }
}

注意:由于外键约束,如果不存在相应的班级id,则会报错,插入失败

 

5、model first

分局model生成数据库,与sqlserver可视化类视图相似

 

1)使用方式

①安装EF

②项目右键添加——数据——ADO.NET实体数据模型——空

③在可视化工具中编辑:空白处右键新增实体并为其设置属性,规定约束

④添加关联

技术图片

⑤映射到数据库:

空白处右键——根据模型生成数据库

按照提示操作,系统将生成实体类同时生成一段创建数据库的代码

⑥执行所生成的sql文件

 

2)插入数据

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

namespace ModelFisrt1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (Model1Container container = new Model1Container())
            {
                container.Category.Add(new Category()
                {
                    CateName="Phone"
                    
                });
                container.SaveChanges();
            }
            Console.WriteLine("okok");
            Console.Read();
        }
    }
}

 

6.Code First

先写代码生成实体,再根据实体生成数据库

1)创建方式

①安装EF

②项目右键添加——数据——ADO.NET实体数据模型——空的code first模型

③在弹出的 model文件中完成数据库操作类代码的编写

namespace CodeFirst1
{
    using System;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Entity;
    using System.Linq;

    public class DemoModel : DbContext
    {
        //您的上下文已配置为从您的应用程序的配置文件(App.config 或 Web.config)
        //使用“DemoModel”连接字符串。默认情况下,此连接字符串针对您的 LocalDb 实例上的
        //“CodeFirst1.DemoModel”数据库。
        // 
        //如果您想要针对其他数据库和/或数据库提供程序,请在应用程序配置文件中修改“DemoModel”
        //连接字符串。
        public DemoModel()
            : base("name=DemoModel")
        {
        }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            // 改变一些配置
            base.OnModelCreating(modelBuilder);
        }

        //为您要在模型中包含的每种实体类型都添加 DbSet。有关配置和使用 Code First  模型
        //的详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=390109

         public virtual DbSet<MyEntity> MyEntities { get; set; }
    }

    public class MyEntity
    { 
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
    }


    //public class MyEntity
    //{
    //    public int Id { get; set; }
    //    public string Name { get; set; }
    //}
}

④App.Config修改连接字符串

  <connectionStrings>
    <add name="DemoModel" connectionString="data source=127.0.0.1;initial catalog=CodeFirst1.DemoModel;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
  </connectionStrings>

 

⑤书写主程序代码

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

namespace CodeFirst1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (DemoModel db= new DemoModel())
            {
                db.MyEntities.Add(new MyEntity()
                {
                    Name = "John"

                });
                db.SaveChanges();
            }
            Console.WriteLine("ok");
            Console.ReadLine();
        }
    }
}

执行上面代码后,系统自动根据连接字符串创建一个新的数据库

技术图片

 

以上是关于ef601的主要内容,如果未能解决你的问题,请参考以下文章

EF6 自定义迁移表名

EF 开始的片段时有问题 具有潜在运行时冲突

EF Core 基础知识

.NET Entity Framework(EF)使用SqlQuery直接操作SQL查询语句或者执行过程

解析错误无效的 XML:601

ASP.NET MVC4.0+EF+LINQ+bui+网站+角色权限管理系统