原创

Dos.ORM使用方法 - 直接执行Sql

 167881  2015/02/23 07:57:33

car_5

Dos.ORM直接执行Sql语句,其实原理就与DbHelper一样,当然性能也是一模样。缺点就是写的sql语句不可能数据库通用,如“SELECT TOP 1 * FROM table”,在MySql下就应该是“SELECT * FROM table LIMIT 0,1”。

创建DbSession对象:

public class DB
{
    public static readonly DbSession Context = new DbSession("DosConn");
}

直接执行SQL语句:

//返回List<table>数据
var list = DB.Context.FromSql("SELECT * FROM table").ToList<table>();
//也可以指定任意类映射返回:
public class ViewTable
{
    public string name {get;set;}
    public string sex {get;set;}
}
//返回List<ViewTable>,将成功映射name,sex。id无法映射,因为没有为ViewTable定义id属性。
var list = DB.Context.FromSql("SELECT id,name,sex FROM table").ToList<ViewTable>();

执行带参SQL:

var list = DB.Context.FromSql("SELECT * FROM table WHERE name=@name AND id=@id")
                .AddInParameter("@name", DbType.String, "ITdos")
                .AddInParameter("@id", DbType.Int32, "1")
                .ToList<table>();
//也可以先拼接好参数,再一次性传入
var params = new DbParameter[2];
params[0] = DbSession.Default.Db.DbProviderFactory.CreateParameter();
params[0].DbType = DbType.String;
params[0].ParameterName = "@name";
params[0].Value = "ITdos";
params[1] = DB.Context.Db.DbProviderFactory.CreateParameter();
params[1].DbType = DbType.Int32;
params[1].ParameterName = "@id";
params[1].Value = 1;
DB.Context.FromSql("SELECT * FROM table WHERE name=@name AND id=@id")
    .AddParameter(params)
    .ToDataTable();

返回类型还可以如下:

//返回DataReader
IDataReader ToDataReader()
//返回DataSet
DataSet ToDataSet()
//返回受影响的条数
int ExecuteNonQuery()
//返回单个值,第一行第一列
object ToScalar()
//返回执行类型的值 
TResult ToScalar<TResult>()
//返回第一条实体
TEntity ToFirst<TEntity>()