原文:https://www.cnblogs.com/leotsai/p/entity-framework-doesnt-need-additional-repository.html

花猫.NET的评论里面的代码

记录一下

1、创建的控制台程序,NuGet引用了EF。  里面用了序列号,需要引用Newtonsoft.Json

2、数据库用的现成的,已经有表和数据了。数据库名MyDbContext,表Students

3、在app.config中添加配置项,添加到configSections这个节点后面,和它同级。

<connectionStrings>
<add name="MyDbContext" connectionString="Data Source=.\sqlexpress;Database=MyDbContext;UID=sa;PWD=sa;" providerName="System.Data.SqlClient"></add>
</connectionStrings>

全部代码

基本使用

//基本使用
public class Class4
{
public void test1()
{
Console.WriteLine();
using (var db = DbFactory.Create())
{
//db....
//db.SaveChange(); //测试1 打印students表的所有数据
var list = db.All<Students>().ToList();
var str = JsonConvert.SerializeObject(list);
Console.WriteLine(str); //测试2 添加一个学生
Students student1 = new Students
{
Name = "name12",
Age = ,
};
db.Insert<Students>(student1);
db.SaveChanges();
}
}
}

自定义代码

    //自定义代码
public class Students
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public DateTime? CreateTime { get; set; }
} public class MyDbContext : DbContext
{
public MyDbContext(string connectionName) : base(connectionName) { }
public DbSet<Students> Orders { get; set; }
}

通用代码 引用了 MyDbContext

    //原文:https://www.cnblogs.com/leotsai/p/entity-framework-doesnt-need-additional-repository.html
//花猫.NET的评论里面的代码 //通用代码 引用了 MyDbContext
public class DbFactory
{
public static IRepository Create()
{
return new EfRepository(new MyDbContext("MyDbContext"));
}
} public interface IRepository : IDisposable
{
int SaveChanges();
IQueryable<T> All<T>() where T : class;
T Get<T>(Expression<Func<T, bool>> conditions) where T : class;
void Insert<T>(T entity) where T : class;
void Update<T>(T entity) where T : class;
void Delete<T>(T entity) where T : class;
void Delete<T>(Expression<Func<T, bool>> conditions) where T : class;
List<T> Find<T>(Expression<Func<T, bool>> conditions = null) where T : class;
List<T> Find<T, S>(Expression<Func<T, bool>> conditions, Expression<Func<T, S>> orderBy, int pageSize, int pageIndex, out int totalCount) where T : class;
List<T> SqlQuery<T>(string sql);
int ExecuteSqlCommand(string sql);
long GetNextSequenceValue(string sequenceName);
} public class EfRepository : IRepository
{
private DbContext context; public EfRepository(DbContext dbcontext)
{
context = dbcontext;
} #region IRepository public IQueryable<T> All<T>() where T : class
{
return context.Set<T>().AsNoTracking();
} public void Update<T>(T entity) where T : class
{
var entry = context.Entry(entity);
if (entry.State == EntityState.Detached)
{
context.Set<T>().Attach(entity);
}
entry.State = EntityState.Modified;
} public void Insert<T>(T entity) where T : class
{
context.Set<T>().Add(entity);
} public void Delete<T>(T entity) where T : class
{
var entry = context.Entry(entity);
if (entry.State == EntityState.Detached)
{
context.Set<T>().Attach(entity);
}
entry.State = EntityState.Deleted;
context.Set<T>().Remove(entity);
} public void Delete<T>(Expression<Func<T, bool>> conditions) where T : class
{
var list = Find<T>(conditions);
foreach (var item in list)
{
Delete<T>(item);
} } public T Get<T>(Expression<Func<T, bool>> conditions) where T : class
{
return All<T>().FirstOrDefault(conditions);
} public List<T> Find<T>(Expression<Func<T, bool>> conditions = null) where T : class
{
if (conditions != null)
{
return All<T>().Where(conditions).ToList();
}
else
{
return All<T>().ToList();
} } public List<T> Find<T, S>(Expression<Func<T, bool>> conditions, Expression<Func<T, S>> orderBy, int pageSize, int pageIndex, out int totalCount) where T : class
{
var queryList = conditions == null ?
All<T>() :
All<T>().Where(conditions); totalCount = queryList.Count(); return queryList.OrderByDescending(orderBy).Skip((pageIndex - ) * pageSize).Take(pageSize).ToList();
} public List<T> SqlQuery<T>(string sql)
{
return context.Database.SqlQuery<T>(sql).ToList();
} public int ExecuteSqlCommand(string sql)
{
return context.Database.ExecuteSqlCommand(sql);
} public int SaveChanges()
{
return context.SaveChanges();
} public void Dispose()
{
context.Dispose();
} public long GetNextSequenceValue(string sequenceName)
{
var rawQuery = context.Database.SqlQuery<long>(string.Format("SELECT NEXT VALUE FOR {0}", sequenceName)).ToList();
long nextVal = rawQuery.Single(); return nextVal;
} #endregion
}

最新文章

  1. 写入文件(txt格式)
  2. [转]C语言指针学习经验总结浅谈
  3. JS判断鼠标移入元素的方向
  4. (C语言)精髓——指针
  5. Json数据处理
  6. Chap2: question: 1 - 10
  7. [MFC] MFC 仿 Flappy bird PC桌面版
  8. 使用SVG生成的奔跑吧兄弟的动画效果
  9. JS 动画基础
  10. nuget使用
  11. input里面的查找标记 ő
  12. 【开源项目】Android 手写记事 App(半成品)
  13. txt文件导入mysql--转
  14. oracle常用自定义函数集合
  15. Oracle11g R2学习系列 之六数据库链接,快照及序列
  16. RSA加密解密和读取公钥、私钥
  17. linux C/C++开发环境搭建指南
  18. Vue 指令篇 案例(输入提交显示 提交数据_列表)
  19. windows下安装Rabbitmq详解
  20. Python调用jar包中的方法

热门文章

  1. httpd2.4.6配置文件解释说明
  2. 图像三维灰度分布图——matlab
  3. 记一次nmap扫描信息收集过程
  4. WinHTTrack Website Copier使用说明
  5. NET-SNMP基本命令
  6. 基于STM8的GPIO操作---STM8-第一章
  7. sqlserver查找使用了某个字段的所有存储过程
  8. POJ3094 Quicksum
  9. solr中facet及facet.pivot理解(整合两篇文章保留参考)
  10. BootStrap table动态增删改表格内数据