让C#开发更简单抽象增删改Word下载.docx

上传人:b****5 文档编号:21575415 上传时间:2023-01-31 格式:DOCX 页数:21 大小:34.37KB
下载 相关 举报
让C#开发更简单抽象增删改Word下载.docx_第1页
第1页 / 共21页
让C#开发更简单抽象增删改Word下载.docx_第2页
第2页 / 共21页
让C#开发更简单抽象增删改Word下载.docx_第3页
第3页 / 共21页
让C#开发更简单抽象增删改Word下载.docx_第4页
第4页 / 共21页
让C#开发更简单抽象增删改Word下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

让C#开发更简单抽象增删改Word下载.docx

《让C#开发更简单抽象增删改Word下载.docx》由会员分享,可在线阅读,更多相关《让C#开发更简单抽象增删改Word下载.docx(21页珍藏版)》请在冰豆网上搜索。

让C#开发更简单抽象增删改Word下载.docx

/// 

<

summary>

数据库访问类 

/summary>

public 

class 

DataBaseAccess 

static 

SqlConnection 

CreateConnection() 

string 

connStr 

ConfigurationManager.ConnectionStrings["

connString"

].ConnectionString;

conn 

new 

SqlConnection(connStr);

conn.Open();

return 

conn;

执行增、删、改方法 

param 

name="

sql"

>

/param>

parms"

returns>

/returns>

int 

Execute(string 

sql, 

object 

parms 

null) 

(IDbConnection 

CreateConnection()) 

conn.Execute(sql,parms);

得到单行单列 

ExecuteScalar(string 

conn.ExecuteScalar(sql, 

parms);

单个数据集查询 

List<

TEntity>

Query<

(string 

sql,Func<

TEntity,bool>

pre 

object 

conn.Query<

(sql, 

parms).Where(pre).ToList();

parms).ToList();

多个数据集查询 

SqlMapper.GridReader 

MultyQuery(string 

conn.QueryMultiple(sql, 

TEntity 

FirstOrDefault<

selector, 

parms).Where(selector).FirstOrDefault();

}

我把增删改查抽象出来了,少不了的就是SQL语句的生成,生成SQL语句,要么是映射,要么是反射,而我用的是反射,给一个Entity类,我读取他所有属性和字段,然后生成对应的SQL语句。

NetUtility.Dapper.Core.DataMapping.cs

internal 

DataMapping<

TModel>

where 

TModel 

:

#region 

数据库类型+DataBaseType 

数据库类型 

DataBaseType 

get 

strType 

ConfigurationManager.AppSettings["

DataBaseType"

];

if 

(!

string.IsNullOrEmpty(strType)) 

strType;

else 

string.Empty;

#endregion 

主键属性字段+PrimaryKey 

主键字段名称 

PrimaryKey 

Type 

typeof(TModel);

TableInfoAttribute 

tableInfo 

t.GetCustomAttribute(typeof(TableInfoAttribute), 

true) 

as 

TableInfoAttribute;

(tableInfo!

=null)//如果没有标识表信息特性,则通过表名向数据库中得到主键信息 

tableInfo.PrimaryKey;

tableName 

TableName();

DataBaseAccess.ExecuteScalar("

SELECT 

name 

FROM 

SysColumns 

WHERE 

id=Object_Id('

"

'

) 

and 

colid=(select 

top 

colid 

from 

sysindexkeys 

))"

).ToString();

获取表名+TableName 

获取表名 

prev"

数据库表名前缀<

TableName(string 

prev 

!

null 

?

tableInfo.TableName 

string.Concat(prev, 

t.Name);

Select 

查询语句+GetQuerySql 

查询语句 

GetQuerySql() 

StringBuilder 

sql 

StringBuilder("

select 

);

sql.Append(TableName());

sql.ToString();

Insert非Null属性的对象实例 

Sql 

语句+GetInsertSql 

Insert 

非Null属性的对象实例 

语句 

model"

GetInsertSql(TModel 

model) 

insert 

into 

string[] 

props 

Propertys(model);

sql.Append("

("

sql.Append(string.Join("

"

 

props));

values(@"

@"

@@IDENTITY"

Delete 

语句+GetDeleteSql 

GetDeleteSql() 

string.Format(@"

delete 

{0} 

{1} 

in 

@IdList"

TableName(), 

PrimaryKey);

Update 

Sql语句+GetUpdateSql 

Sql语句 

GetUpdateSql(TModel 

update 

set 

foreach 

propName 

props) 

sql.Append(propName 

=@"

sql.Remove(sql.Length 

1, 

1);

=@Id"

非主键且非Null属性集合+Propertys 

非主键且非Null属性 

Propertys(TModel 

PropertyInfo[] 

typeof(TModel).GetProperties();

string>

list 

();

key 

PrimaryKey;

(props 

&

props.Length 

0) 

(PropertyInfo 

prop 

(prop.GetValue(model, 

prop.Name.Equals(key, 

StringComparison.OrdinalIgnoreCase)) 

list.Add(prop.Name);

list.ToArray();

代码中的TableInfoAttribute类是我建一个属性特性类,用于标识表名和主键名称的特性类,假如Entity实体类上面没有标识主键名称,框架默认会用Entity类名作为表名,建议最好标识一下表名和主键名称。

NetUtility.Dapper.Core.TableInfoAttribute.cs

NetUtility.Da

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 社交礼仪

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1