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 ...
随机推荐
- C++vector针对排序操作练习
目的: 定义5个学生,包含名字和分数,对成员进行从大到小排序,并输出 #include <iostream> #include <cstring> #include <v ...
- android studio 升级到3.3.1后,提示程序包不存在
android studio 升级到3.3.1后,提示程序包不存在 原因 主Module--A 引用了其他Moduel--B里的jar库, 只需要把B的dependencies改成如下(implent ...
- 关于FIFO memory buffer模块的设计
关于FIFO memory buffer模块的设计 FIFO memory `timescale 1ns / 1ps ///////////////////////////////////////// ...
- Selenium常用方法
Selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击.下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬.对于一些JavaScript动态渲染的页面来说 ...
- canvas一些属性
lineTo(x,y) 定义线条结束坐标 moveTo(x,y) 定义线条开始坐标 ctx.stroke();绘制空心图形 ctx.fill();填充图形 把当前路径环绕起来的区域进行填充 ctx.f ...
- js对象的创建
一.通过对象直接量来创建 var emptyt={}; //相当于var empty=new Object; //如果属性名中包含空格.连字符(-).还有关键字,保留字时,要用字符串表示 var b ...
- idea spring boot docker 多项目 maven 编译
1,重复的model [INFO] Scanning for projects... [ERROR] [ERROR] Some problems were encountered while proc ...
- 服务器后台代码生成TreeView的json字符串
1.根据treeView控件的属性建立vo类 package cn.allen.tree.vo; import java.util.List; import java.util.Map; public ...
- windows server 2003产生的 Minidmp蓝屏文件分析求助
在机房运行的四台服务器中均出现了蓝屏dmp文件,经过整理发现CDMS主备服务器最近(2018年1月开始)蓝屏的dmp很多.经过自己的学习分析发现不足以找到先关的原因和处理方法,希望得到大牛们的帮助.以 ...
- arrayList转换为数据
ArrayList arrayList = SetTools.loadfile(path); string[] str = (string[])arrayList.ToArray(typeof(str ...