efcore调用函数_.NetCore中EFCore的使用整理

EntirtyFramework框架是一个轻量级的可扩展版本的流行实体框架数据访问技术.

其中的.NetCore版本对应EntityFrameworkCore

一、安装Nuget包

Install-package Microsoft.EntityFrameworkCore

Install-package Microsoft.EntityFrameworkCore.SqlServer

Micorsoft.EntityFrameworkCore:EF框架的核心包

Micorsoft.EntityFrameworkCore.SqlServer:针对SqlServer数据库的扩展,使用SqlServer数据库必须。类似的还有MySql,SqlLite等

Micorsoft.EntityFrameworkCore.Tools

&Micorosft.EntityFrameworkCore.Design:用户根据现有的数据库生成模型代码等 ,更多参考 :https://docs.microsoft.com/zh-cn/ef/efcore-and-ef6/porting/port-edmx二、使用实例

1.安装Nuget包之后,手动创建上下文,并 注入sql链接字符串

usingMicrosoft.EntityFrameworkCore;namespaceCore2

{public classTestContext : DbContext

{//public TestContext(DbContextOptions options) : base(options)//{//}

protected override voidOnConfiguring(DbContextOptionsBuilder optionsBuilder)

{//注入Sql链接字符串

optionsBuilder.UseSqlServer(@"Server=.;Database=Test1;Trusted_Connection=True;");

}public DbSet Numeber1s { get; set; }

}

}

View Code

2.手写实体类,只要数据库中 存在对应 的表就可以了

usingSystem.ComponentModel.DataAnnotations;usingSystem.ComponentModel.DataAnnotations.Schema;namespaceCore2

{

[Table("Numeber1")]public classNumeber1

{

[Key]public int ID { get; set; }public decimal Num1 { get; set; }

}

}

View Code

3.测试代码:

static voidTestOne()

{

TestContext _context= newTestContext();int count =_context.Numeber1s.Count();

Console.WriteLine(count);

}static voidTestTwo()

{

DateTime start=DateTime.Now;

TestContext _context= newTestContext();for (int i = 0; i < 10000; i++)

{

_context.Numeber1s.Add(newNumeber1()

{

Num1=i

});

_context.SaveChanges();

}

Console.WriteLine(_context.Numeber1s.Count());

Console.WriteLine("总时间,秒数:" + (DateTime.Now -start).TotalSeconds);

}

View Code

在调试的状态下1万条插入数据执行时间:

三、根据数据库生成模型1.安装EntityFrameworkCore.Design,EntityFrameworkCore.Tools,EntityFrameworkCore.SqlServer.Design

注:在EFCore2.0中只需要安装

EntityFrameworkCore.Tools

如果不需要自动根据数据库生成代码,这个几个类库可以不安装 。

Install-package Microsoft.EntityFrameworkCore.Design

Install-package Microsoft.EntityFrameworkCore.Tools

Install-package Microsoft.EntityFrameworkCore.SqlServer.Design

2.选择对应的项目,执行生成命名

Scaffold-DbContext "Server=.;database=test1;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models2

3.生成结果如下 :

四、Asp.Net Core中注册EF的上下文处理,在Startup文件中1.注册服务

//配置EF的服务注册

services.AddEntityFramework()

.AddDbContext(options =>{

options.UseSqlServer(Configuration.GetConnectionString("SqlServer"), //读取配置文件中的链接字符串

b => b.UseRowNumberForPaging()); //配置分页 使用旧方式

});

2.修改上下文,重点指定DbContextOptions有外部配置

public NotifyBirdContext(DbContextOptions opt) : base(opt)

{

}

3.在控制器中使用数据库上下文服务

NotifyBirdContext _Context = null;publicProjectController(NotifyBirdContext context)

{

_Context=context;

}///

///获取可用项目数量///

///

[HttpGet("getcount")]public intGetCount()

{try{return_Context.Project.Count();

}catch(Exception ex)

{throwex;

}

}

五 、.Net Core中 EF Core上下文配置 2,使用全局变量方式定义链接字符串

1.使用空参数构造器的上下文

///

///全局定义数据连接字符串///

public static string ConStr { get; set; }protected override voidOnConfiguring(DbContextOptionsBuilder optionsBuilder)

{//optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;database=NotifyBird;Trusted_Connection=True;");//配置数据链接

optionsBuilder.UseSqlServer(ConStr,b=>b.UseRowNumberForPaging());

}

2.程序 启动注册链接

public voidConfigureServices(IServiceCollection services)

{//Add framework services.

services.AddMvc();

NotifyBirdContext.ConStr= Configuration.GetConnectionString("SqlServer");

}

3.任意位置实例化,上下文使用

///

///获取可用项目数量///

///

[HttpGet("getcount")]public intGetCount()

{try{

NotifyBirdContext _Context= newNotifyBirdContext();return_Context.Project.Count();

}catch(Exception ex)

{throwex;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值