应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

ef core 公共接口封装

7422人阅读 2019/10/11 17:21 总访问:5194499 评论:0 收藏:0 手机
分类: .NET Core

show me code:

  1. public interface ICommonDAL<T> where T : class, new()
  2. {
  3. protected EFContext context { get; }
  4. /// <summary>
  5. /// 新增一个实体
  6. /// </summary>
  7. /// <param name="entity"></param>
  8. /// <returns></returns>
  9. public int Add(T entity)
  10. {
  11. if (entity == null)
  12. return -1;
  13. context.Entry<T>(entity).State = Microsoft.EntityFrameworkCore.EntityState.Added;
  14. return context.SaveChanges();
  15. }
  16. /// <summary>
  17. /// 批量添加
  18. /// </summary>
  19. /// <param name="entitys"></param>
  20. /// <returns></returns>
  21. public int BatchAdd(List<T> entitys)
  22. {
  23. if (entitys == null)
  24. return -1;
  25. foreach (T item in entitys)
  26. {
  27. context.Entry<T>(item).State = Microsoft.EntityFrameworkCore.EntityState.Added;
  28. }
  29. return context.SaveChanges();
  30. }
  31. public int Deleted(T entity)
  32. {
  33. if (entity == null)
  34. return -1;
  35. context.Entry<T>(entity).State = Microsoft.EntityFrameworkCore.EntityState.Deleted;
  36. return context.SaveChanges();
  37. }
  38. public T AddReturnEntity(T entity)
  39. {
  40. context.Entry(entity).State = Microsoft.EntityFrameworkCore.EntityState.Added;
  41. int count = context.SaveChanges();
  42. if (count > 0)
  43. return entity;
  44. else
  45. return null;
  46. }
  47. public int Update(T t, string keyName)
  48. {
  49. var entry = context.Entry<T>(t);
  50. //把user对象加入上下文,但是没有改变
  51. entry.State = Microsoft.EntityFrameworkCore.EntityState.Unchanged;
  52. //使用反射找到不为空的字段
  53. foreach (var item in t.GetType().GetProperties())
  54. {
  55. //虚拟属性是导航属性
  56. if (item.GetMethod.IsVirtual)
  57. {
  58. continue;
  59. }
  60. //拿到属性值
  61. object obj = item.GetValue(t);
  62. if (obj != null)
  63. {
  64. //不是主键才去修改,如果是主键就不需要修改了
  65. if (item.Name != keyName)
  66. {
  67. //表示该字段需要更新
  68. entry.Property(item.Name).IsModified = true;
  69. }
  70. }
  71. }
  72. return context.SaveChanges();
  73. }
  74. public T GetElementById(int Id)
  75. {
  76. string name = typeof(T).Name;
  77. T element = context.Database.SqlQuery<T>("select * from " + name + " where Id=@Id", new SqlParameter("@Id", Id)).FirstOrDefault();
  78. return element;
  79. }
  80. //public T GetMyNoteFileById(int Id)
  81. //{
  82. // T value = context.Set<T>().Where(a=>a.);
  83. // return myNoteFile;
  84. //}
  85. }

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

ef core检查某个字段是否是主键,ef不查询更新

使用反射检查ef中某个字段是否是主键,使用如下代码即可//检测当前字段是否是主键 varkeys=userm.Property(item.Name).Met...

ef core上下文对象在异步情况下被自动释放的问题。Cannot access a disposed object. A common cause of this error is disposing a context that was resolved

我们看看下面的代码:这里为了节省效率,更新缓存的操作放到了异步中去执行,但是执行到Article findArticle = _articleDAL...

ef ef core 使用原生 SQL 查询

有时候在执行一个赋值一点的sql要动态生成用lamdba来写很不方便,新版本用动态生成表达式树的方式也不怎么行了...需要时间...

ef core 简介

Entity Framework Core 简介 今天来讲解一下 .NET 中的重要成员 Entity Framework Core。Entity Framework Core (以下简...

ef core异步方式读取与返回数据

我们这里可以使用异步的方式来读取与返回数据publicasyncTask&lt;IActionResult&gt;Index() { returnView(await_context....

ef core 多对多

EF 6.x 支持多对多关系的隐式联接表,但 EF Core 不支持。有关详细信息,请参阅:https://github.com/dotnet/efcore/issues...

ef core创建组合主键

使用modelBuilder.Entity&lt;Type&gt;().HasKey指定多个字段即可protectedoverridevoidOnModelCreating(ModelBuildermodelB...

ef core 预先加载显式加载延迟加载

预先加载读取该实体时,会同时检索相关数据。 此时通常会出现单一联接查询,检索所有必需数据。 可使用 Include 和 ThenInc...

ef core 级联删除

和以前的写法有点不同现在没有modelBuilder.Conventions这种用法了,单独开启级联删除的方法也和以前不太一样以前的写法:p...

ef core SqlSugarFreeSqlDapper EF 对比

EF Core优点:微软官方ORM功能强大,支持模式多文档齐全缺点:1.复杂查询生成的SQL语句性能太差(对操作功力要求高)2.一些...

ef core中使用IDesignTimeDbContextFactory的测试方法,调试方法

DesignTimeDbContextFactory的作用 一些EF Core Tools命令(例如Migrations命令)需要在设计时创建一个派生的DbContext实例...

abp vnext连接mysql。.net core连接mysql。ef core连接mysql

增加一个MySQL的库:Volo.Abp.EntityFrameworkCore.MySQL &lt;PackageReference Include=&quot;Volo.Abp.EntityFrameworkCo...

abp vnext ef core连接MySql报空引用错,连接SqlServer报空引用错。abp vnext 的坑

使用abp vnext 真的太喜欢报空引用的错了。你报点错给一点具体的错不行么,这样搞起让人去猜太坑了,比如前面的auto_fac没...

ef core code first 忽略映射数据库字段NotMapped

ef core code first 忽略映射数据库字段非常简单使用NotMapped特性即可。 [NotMapped] public string Status { get; set;...

abp vnext 通用仓储 ef core。WhereIf,多条件,动态条件,分页,动态排序等

abp vnext 通用仓储 ef core WhereIf,多条件,分页等public async Task&lt;List&lt;LandInfoDto&gt;&gt; GetListAsync(Pag...