efcore调用函数_EFCore执行Sql语句的方法:FromSql与ExecuteSqlCommand

前言

在EFCore中执行Sql语句的方法为:FromSql与ExecuteSqlCommand;在EF6中的为SqlQuery与ExecuteSqlCommand,而FromSql和SqlQuery有很大区别,FromSql返回值为IQueryable,因此为延迟加载的,可以与Linq扩展方法配合使用,但是有不少的坑(EFCore版本为1.1.0),直接执行Sql语句的建议不要使用FromSql,但是EFCore中并没有提供SqlQuery方法,因此下面会贴出SqlQuery的实现代码供大家参考,以便在EFCore中能使用。

FromSql和ExecuteSqlCommand的使用

测试时使用了SqlServer2008和SqlServer Profiler进行Sql语句捕捉,EFCore的版本为1.1.0。

测试的Entity Model与DbContext

public class MSSqlDBContext : DbContext

{

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

{

optionsBuilder.UseSqlServer(@"data source=localhost;initial catalog=TestDB;Integrated Security=True;");

}

public DbSet Person { get; set; }

public DbSet

Address { get; set; }

}

[Table(nameof(Person))]

public class Person

{

public int id { get; set; }

public string name { get; set; }

[Column(TypeName = "datetime")]

public DateTime? birthday { get; set; }

public int? addrid { get; set; }

}

[Table(nameof(Address))]

public class Address

{

public int id { get; set; }

public string fullAddress { get; set; }

public double? lat { get; set; }

public double? lon { get; set; }

}

ExecuteSqlCommand

EFCore的ExecuteSqlCommand和EF6的一样,执行非查询的Sql语句:

var db = new MSSqlDBContext();

2 db.Database.ExecuteSqlCommand($"update {nameof(Person)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值