Npoco 轻量级ORM框架(入门)

连接 MySql数据库
1、安装:mysql-connector-net-8.0.20.msi
官方下载地址:http://dev.mysql.com/downloads/connector/net/
如果不想注册Oracle账号也可以用我的地址:https://download.csdn.net/download/u014117094/12414340

2、安装 MySql.Data NuGet程序包:  使用  Install-Package MySql.Data -Version 8.0.20

public class DbHelper 
{


	public static Database MsDb()
	{
		string constr = ConfigurationManager.ConnectionStrings["connString"].ToString();
		Database db = new Database(constr,DatabaseType.SqlServer2008);
		return db;
	}

	public static Database MySqlDb()
	{
		string constr = ConfigurationManager.ConnectionStrings["connStrMysql"].ToString();
		Database db = new Database(constr, DatabaseType.MySQL);
		return db;
	}

}
public class User 
{
  public int UserId { get;set; }
  public string Email { get;set; }
}
 

查询集合

List<User> users = DbHelper.MySqlDb().Fetch<User>("select userId, email from users");

映射

默认情况下不需要映射。如果不指定其属性将会假设表的名称是类别名称,主键是“ID”。 最常用的基本属性映射是: [TableName("Users")] [PrimaryKey("UserId")] public class User { public int UserId { get;set; } [Column("emailAddress")] public string Email { get;set; } [ResultColumn] public string ExtraInfo { get;set; } [Ignore] public int Temp { get;set; } }


查询单个对象

从数据库中查询一个对象可以几种不同方法来完成。 通过ID最简单的方式是使用 SingleById<T>()方法。 User u = DbHelper.MySqlDb().SingleById<User>(3); 通过SQL下面你可以看到,只有其中的规定。如果您不显式提供选择的条款将自动为您生成和在其中将随后附上。 User u = DbHelper.MySqlDb().Single<User>("where emailaddress = @0", "[email protected]"); or User u = DbHelper.MySqlDb().Single<User>("select u.* from users u where emailaddress = @0", "[email protected]"); 这两种方法都有一个“ordefault”方法,如果您不确定对象的存在。如果它不存在,而且您没有使用到 ordefault 就会引发异常。 还有 First<T> 和 FirstOrDefault<T> 如果有多条数据将抛出一个异常,如果不多于1个记录将被返回。

插入,更新,删除

插入新记录

User u = new User() { Email = "[email protected]", LastLoggedIn = DateTime.UtcNow }; DbHelper.MySqlDb().Insert(u);

更新记录

var user = DbHelper.MySqlDb().SingleById(1); user.Email = "[email protected]"; db.Update(user);

删除记录

var user = DbHelper.MySqlDb().SingleById(1); db.Delete(user); or db.Delete<User>(1);

覆盖或新建记录

User u = new User() { Email = "[email protected]", LastLoggedIn = DateTime.UtcNow }; DbHelper.MySqlDb().Save(u); 这样会插入一个新记录或更新一个现有记录。它是否存在是由主键确定的。

查询列表

获取所有:

List<User> users = DbHelper.MySqlDb().Fetch<User>();

标准获取:

List<User> users = DbHelper.MySqlDb().Fetch<User>("where isActive = 1"); 使用SQL: List<User> users = DbHelper.MySqlDb().Fetch<User>("select u.* from users where u.isActive = 1");

懒惰警告:

以下方法Query<T>使用生成的关键字。运行该查询的结果都被遍历。如果你不完全理解这一概念,请使用Fetch<T>。 List<User> users = DbHelper.MySqlDb().Query<User>("select u.* from users where u.isActive = 1"); 查询分页主要有两种方法用于查询分页。 Page<T> pagedUsers = DbHelper.MySqlDb().Page<User>(2, 10, "select u.* from users u order by userid"); 其中Page<T>被定义为: public class Page<T> { public long CurrentPage { get; set; } public long TotalPages { get; set; } public long TotalItems { get; set; } public long ItemsPerPage { get; set; } public List<T> Items { get; set; } } 注意:您必须在SQL语句中提供一个order by语句,以便查询知道您希望将数据分页的顺序。页面的第一个参数是页面编号。这个数字从第一个页面的1开始。第二个参数是页面的大小。在上面的示例中,将返回包含10个用户的第二个页面。

SkipTake<T>

SkipTake<T> 方法与在LINQ中跳过采取方法非常相似。它具有与页面< T >方法相同的参数数量,但第一个参数不是页码,而是记录的数量(即要取的记录数量?)。第二个参数是跳过x个记录之后返回的记录数(即开始的位置?)。为了返回与Page<T>方法相同的结果,查询将如下所示: List<User> users = DbHelper.MySqlDb().SkipTake<User>(10, 10, "select u.* from users u order by userid");

对事务的支持

Example 1 DbHelper.MySqlDb().BeginTransaction(); //此处代码省略 DbHelper.MySqlDb().CompleteTransaction(); Example 2 using (var transaction = DbHelper.MySqlDb().GetTransaction()) { //此处代码省略 transaction.Complete(); }

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值