可以使用继承EF的DbCommandInterceptor,然后重写里边的方法,修改生成的sql语句代码如下
public class QueryWithNoLockDbCommandInterceptor : DbCommandInterceptor
{
// 可以把 from [XX] as [y] 替换为 from [XX] as [y] WITH (NOLOCK)。也就是需要在后面加上WITH (NOLOCK) 其中[XX]与[y]可以是任意英...
2022-08-08
浏览(6233)
EF根据模型生成表的时候会默认加上复数,以前要想解决这个写法很简单,把这个复数规则删除掉即可protectedoverridevoidOnModelCreating(DbModelBuildermodelBuilder)
{
//删除掉默认添加的复数形式规则
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}但是这种modelBuilder.Conve...
2021-12-22
浏览(9075)
有时候在执行一个赋值一点的sql要动态生成用lamdba来写很不方便,新版本用动态生成表达式树的方式也不怎么行了...需要时间去慢慢研究,我们也可以尝试选择使用原生的sql方法。可以使用FromSqlRaw 或FromSqlInterpolated一个简单的动态拼接or条件的例子://动态构建sql语句
StringBuilderstringBuilder=newStringBu...
2020-03-25
浏览(9519)
使用反射检查ef中某个字段是否是主键,使用如下代码即可//检测当前字段是否是主键
varkeys=userm.Property(item.Name).Metadata.GetType().GetProperty("Keys");
objectvalue=keys.GetValue(userm.Property(item.Name).Metadata);可以用于在封装不需要查询直接更新的时候用,因为如果是主键设置IsModif...
2020-02-28
浏览(9569)
.NET CORE EF 数据库迁移需要的依赖Install-Package Microsoft.EntityFrameworkCore.SqlServer -version 3.1.1
Install-Package Microsoft.EntityFrameworkCore.Tools -version 3.1.1
Install-Package Microsoft.EntityFrameworkCore.Design -version 3.1.1
或者使用ItemGroup的方式安装依赖
<ItemGroup>...
2019-12-22
浏览(12487)
方法一:通过默认名称,导航属性名称+主表主键注意这个是属性不是字段!,要加get,set可能会因为很久没有用,就忘记了,写成字段了,这样就不行了。还有可能会报错:这是因为数据库表中的数据问题,如果以前附表里边本来就有数据,现在在去加外键,因为主表是刚刚才创建的里边数据没有,所以这个时候添加外键肯定因...
2019-10-25
浏览(8811)
我们在显示表格的时候经常会在点击表头的时候实现排序,当然很多前端的框架都实现了当前页的页面排序,直接配置一下就行了,但是我们这里要说的是全表排序,也就是前台需要传递排序字段(根据什么排序)和排序方式(升序或者降序)。我们最容易想到的做法就是使用判断来,根据排序字段来判断根据什么排序if(sort.ToLowe...
2019-10-23
浏览(8884)
System.Data.EntityState一共有五种状态分别是Added,Deleted,Modified,UnChanged,Detached下面给一个简单的解释System.Data.EntityState.Added在上下文中,而且对象是需要添加的状态System.Data.EntityState.Deleted在上下文中,而且对象是需要删除的状态System.Data.EntityState.Modified在上下文中,而且对象是需...
2019-10-12
浏览(9846)
Code First配置多对多关系,常规有两种方法例如我们有一张学生表,和一张课程表,学生和课程是一个多对多的关系方法1:单纯使用导航属性 首先在学生表中加入课程表的导航属性 然后在课程表中加入学生的导航属性 这样就可以根据导航属性,生成关联表与外键关系了 可以看到自动生成的表...
2019-05-08
浏览(8337)
Enable-Migrations启用数据库迁移Enable-Migrations –EnableAutomaticMigrations 启动自动迁移Add-Migration Name(名字可以随便取):相当于记录一个版本变更记录,例如修改了字段名字,改短了长度等Add-Migration Initial -Force:可以初始Update-Database 更新到数据库Update-Database -Verbose :更新到数据库,并...
2019-05-08
浏览(7407)
EF:执行命令报错无法将“Enable-Migrations”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后重试这是因为项目里边对ef的引用不完整一般我们使用code first的时候都会先添加一个空模型来添加ef的依赖,但是有些环境下添加空模型不能完整的添加ef的依赖...
2019-05-08
浏览(10711)
直接执行sql语句//全表查询
List<Users>ulist=se.Database.SqlQuery<Users>("select*fromusers").ToList(); 接条件很也方便//接条件查询
List<Users>ulist=se.Database.SqlQuery<Users>("select*fromuserswherenumber=@number",newSqlParameter("number",...
2019-05-06
浏览(23355)
Entity Framework 动态构造select表达式比如我们需要返回某些字段会采用如下的写法但是发现每次都去写select如果字段很多不想去一个一个查询出来,就想指定一个dto的类型他就能查询dto里边的字段,然后自动映射到dto里边去就可以减少很多工作量了我们把lambda表达式提到外面去这种可以,但是下面这种构建一个dto_us...
2019-03-29
浏览(13158)
例如我们要匹配一个集合中的所有关键字,我们首先想到的做法是这样的publicList<Article>GetArtByKeys(List<string>_keywords)
{
CNBlog_ServerContextef=EFHelper.GetInstance();
varquery=ef.Art;
//循环添加条件
foreach(stringkeywordin_keywords)
{
query.Where(a=>a.Title.Contains(...
2019-02-10
浏览(15080)
报错的地方var result= _db.Database.SqlQuery<SMachine>(sql).FirstOrDefault();经过分析,是因为SqlQuery方法查询返回的是model实体SMachine.但是相应的sql语句却没有返回全部的列。只是返回了部分的列,导致了此问题所以要解决很简单,这个的泛型就新建一个dto就行了,只放你需要的字段即可
2019-01-10
浏览(9242)
自己写一下里边的原理对了解它的用法有很大的帮助,select都作用类似就是把1对多的格式处理成1对1的格式,比如这里的把UserScoreViewModel格式处理成UserScoreViewModel2我们要想写通用的扩展方法出来可以先写一个专门的处理UserScoreViewModel格式成UserScoreViewModel2的方法,这样做也便于我们分析和理解问题,...
2018-10-11
浏览(7685)
代码如下:List<Article>articles=context.Article.FromSqlInterpolated($"selecttop500*fromArticle").ToList();
2018-03-21
浏览(7249)
;