EF code first步骤

代码先行,以代码为主

1:建立model 映射数据库表

2:建立dbcontext 说明要连接哪个库,要操作什么表

3:Dal执行方法时创建实例 dbcontext

4:执行各种方法

1.2的基础工作就是建表,说明表,建立dbcontext上下文,连接配置名称

3.4 创建实例对象 进行增删改查操作

详解:

配置文件里设置

配置节点中要声名name 
声名的内容~  <add name="DB_US" connectionString="Data Source=192.168.103.50\DBSERVER;
Initial Catalog=NewCommon180802;Persist Security Info=True;User ID=sa;Password=._com"
 providerName="System.Data.SqlClient" />

!!俩个要点 1:声名providerName="System.Data.SqlClient
2:configSections必须是configuration的第一个结点,把connectionStrings添加到第一个也是提示错误

<configuration>
  <configSections> 第一个结点
  <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, 
EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

 </configSections>
  <connectionStrings>第二个结点
    声名的内容~
 </connectionStrings>

 

1.建表  如何建? 关系怎么建?

建表就是建类,只是类里面的字段类型要匹配映射数据库的名字类型。关系也要建立。

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
配置约束俩种:1是属性注释 2:构造器Fluent API

对于映射数据库表实体model构建 主外键导航
首先第一步基础:建立简单字段
定义class  定义字段属性
如果不定义属性【table】属性注释class的话,数据库的名字会自己起名为class名字的复数形式

第二步建立主外键
由于默认会把Id结尾的属性作为主键,所以不用属性注释key也可以。
从表中表明是哪个主表哪个是外键名字

建议使用方法
[ForeignKey("A")] A表的外键 下方TarAid 
public int TarAid { get; set; }
public Destination A { get; set; }

另一种写法
public int TarAid { get; set; }
[ForeignKey("TarAid ")] TarAid 是我A表的外键
public Destination A { get; set; }

逆属性
如果在一个主表中需要引用一个从表俩次
主表设置区分通过逆属性InverseProperty

        //第一联系人
        [InverseProperty("PrimaryContactFor")] 
        public Person PrimaryContact { get; set; }
        //第二联系人
        [InverseProperty("SecondaryContactFor")] 
        public Person SecondaryContact { get; set; } 

一对一关系的话即是主键也是外键
        [Key, ForeignKey("PhotoOf")]
        public int PersonId { get; set; }

 

 

举列子说明:

属性注释就是model中字段直接解释说明 直接在对应的model类中写

eg:

key是主键 foreignkey是外键 还有很多列如字段长度 之类的可以自行百度。

构造器:主要是通过继承DbContext并重写其中的OnModelCreating方法来进行的 是写在下面介绍的dbcontext的类中

eg:

建立dbcontext 上下文   提供了有这么多构造函数 一般选择字符串连接就行了

在model类库下建立一个名字为Context的文件下 在里面建一个类 连接数据哭字符 然后不要初始化数据库

说明了连接数据库 就说明都有哪些表 是跟这个dbcontext 关联的

virtual 是关键字  dbset是表示上下文中的所有实体的集合,或者可以从数据库中查询给定类型的集合

 

3:创建实例:

在dal类库下创建工厂类EFContextFactory.cs,专为实例化上下文 写个方法

 public static PeonyContext GetCurrentDbContext()
        {
            //CallContext:是线程内部唯一的独用的数据槽(一块内存空间)
            //传递DbContext进去获取实例的信息,在这里进行强制转换。
            PeonyContext dbContext = CallContext.GetData("PeonyContext") as PeonyContext;
            if (dbContext == null) //线程在数据槽里面没有此上下文
            {
                dbContext = new PeonyContext(); //如果不存在上下文的话,创建一个EF上下文

                //我们在创建一个,放到数据槽中去
                CallContext.SetData("PeonyContext", dbContext);
            }

            return dbContext;
        }

4:有了上下文 各个dal 方法类中 可以初始化

 public PeonyContext DbContext = EFContextFactory.GetCurrentDbContext();

DbContext进行增删改查

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值