EF 一个简单的使用
原文: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
}
EF 一个简单的使用的更多相关文章
- 只是一个用EF写的一个简单的分页方法而已
只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...
- 用EF DataBase First做一个简单的MVC3报名页面
使用EF DataBase First做一个简单的MVC3报名网站 ORM(Object Relational Mapping)是面向对象语言中的一种数据访问技术,在ASP.NET中,可以通过ADO. ...
- 自己实现的一个简单的EF框架(反射实现)
我实现了一个简单的EF框架,主要用于操纵数据库.实现了对数据库的基本操纵--CRUD 这是项目结构 这是一个 core 下的 DLL 写了一个数据库工厂,用于执行sql语句.调用sql语句工厂 写了一 ...
- 一个简单的Webservice的demo,简单模拟服务
前段时间一直在学习WCF,匆匆忙忙的把<WCF全面解析>和<WCF服务编程>看了一遍,好多东西都不是很懂,又听了一下WCF分布式开发的网络教程,算是马马虎虎的明白点了.回顾了一 ...
- ADF_General JSF系列1_创建一个简单的JSF Application
2015-02-17 Creatd By BaoXinjian
- 一个简单的ORM制作(SQL帮助类)
一个简单的ORM制作大概需要以下几个类: SQL执行类 CURD操作类 其他酱油类 先从SQL执行类说起,可能会涉及数据库的迁移等问题,所以需要定义一个接口以方便迁移到其他数据库, 事务没提供命名,若 ...
- [.NET] 一步步打造一个简单的 MVC 网站 - BooksStore(一)
一步步打造一个简单的 MVC 网站 - BooksStore(一) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore 简介 主 ...
- asp.net core 实现一个简单的仓储
一直有自己写个框架的想法,但是一直没有行动起来,最近比较闲,正好可以开工了. 现在已经完成了两部分.1.一个简单仓储,实现使用的是ef 2.IOC部分,这里是把内置的ioc替换成了aotofac,这部 ...
- TensorFlow练习13: 制作一个简单的聊天机器人
现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...
随机推荐
- wireless
思科的AP分为胖AP和瘦AP,但其实只是AP中的Image不一样而已,硬件都是一样的,胖AP和瘦AP之间可以互相转换.即使你下单的时候下的是胖AP,拿到货要当瘦AP用,转换一下即可. [相互转换] 详 ...
- angular2 ngfor循环
angular2 在组件模板中可以循环数组集合等对象,语法非常简单,如: <ng-container *ngFor="let item of model.list"> ...
- jquery怎么选择嵌套的第一层的li
$(".ra").click(function(){ var id=$(this).children("ul").attr("id"); i ...
- Unity 3D入门简介
最近在刚开始学习Unity 3D,在这里记录一下学习心得和学习笔记,边学边写,可能会比较零散.好了,废话不多说,今天从Unity 3D入门写起,主要简要介绍一下Unity 3D的和一些学习资料.以下如 ...
- 关于eth0 eth0:1 和eth0.1关系介绍
eth0 eth0:1 和eth0.1三者的关系对应于物理网卡.子网卡.虚拟VLAN网卡的关系:物理网卡:物理网卡这里指的是服务器上实际的网络接口设备,这里我服务器上双网卡,在系统中看到的2个物理网卡 ...
- JavaScript获取元素CSS计算后的样式
原文链接https://www.w3ctech.com/topic/40 我们在开发过程中,有时候需要根据元素已有样式来实现一些效果,那我们应该如何通过JavaScript来获取一个元素计算后的样式值 ...
- 结合源码浅谈Spring容器与其子容器Spring MVC 冲突问题
容器是整个Spring 框架的核心思想,用来管理Bean的整个生命周期. 一个项目中引入Spring和SpringMVC这两个框架,Spring是父容器,SpringMVC是其子容器,子容器可以看见父 ...
- Stream初步应用
一.什么是stream Stream(流)是一个来自数据源的元素队列并支持聚合操作,数据来源可以从inputstream,数组,集合中获取:聚合操作可以类似SQL语句一样的操作, 比如filter, ...
- 一个WPF只能输入数字的行为。
没啥好说的,直接上代码: public class NumberInputBehaviour : Behavior<TextBox> { protected override void O ...
- vue搜索功能
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Vue测 ...