配置文件的一些配置项说明
<connectionStrings>
<!--默认框架数据库连接-->
<add name="Base_ConnectionString" connectionString="Database=test;Server=localhost;User ID=root;Password=;charset=utf8;Allow User Variables=True;" providerName="MySql.Data.MySqlClient" />
<!--全局事物库数据库连接,使用跨库事物,此连接必须配置-->
<add name="GlobalTransition_ConnectionString" connectionString="Database=test;Server=localhost;User ID=root;Password=;charset=utf8;Allow User Variables=True;" providerName="MySql.Data.MySqlClient" />
<!--其他库数据库连接-->
<add name="Test_ConnectionString" connectionString="Database=test2;Server=localhost;User ID=root;Password=;charset=utf8;Allow User Variables=True;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<appSettings>
<!--是否开启全局SQL追踪,1:开启,0:关闭 配合超时时间使用-->
<add key="FastORM_TraceOvertTimeSQL" value="0"/>
<!--追踪超过设置时间时限的SQL(毫秒)语句-->
<add key="FastORM_TraceOverTimeLimit" value="2000"/>
</appSettings>
实体类创建
public class User:BaseEntity
{
[Key]
public string UserGuid { set; get; }
public string Name { set; get; }
public int Age { set; get; }
public string LoginName { set; get; }
public string PassWord { set; get; }
public DateTime AddDate { set; get; }
}
注:所有实体类都要继承自BaseEntity,都需要标注主键字段[key]的注解
方法说明
在程序开始运行时执行DBUtil.Init(),会对所有继承自BaseEntity的实体类进行扫描,进行对象的属性,解析数据,基于Emit的get,set动态方法进行缓存 ,DBUtil和DBRow两个操作类都支持通过TraceSQL属性变量设置来进行SQL语句的跟踪,配置参数配置FastORM_TraceOvertTimeSQL和FastORM_TraceOverTimeLimit后可以对数据库的超时操作进行全面跟踪
增
dbutil.Insert(user);
删
dbutil.Remove(user);
改
dbutil.Save(user);
查
User user = dbutil.FindOne<User>("yanpeng19940119");
注:
1.查找默认按照主键进行查找
2.对于从数据库查找对象的更新,会基于ProxyAttribute对更改的字段进行记录,不会全字段更新
3.对于新创建的对象(从前台的Json传递的数据序列化成的对象),提供更新指定字段的方法Save(T Entity, string[] SaveColumn)
一些复杂方法的支持说明
计算表数量方法(用于分页)
Count<T>()
批量插入方法
InsertBatch<T>(List<T> EntityList, int BatchSize = 500)
查找列表数据
List<T> FindList<T>(string SQL)
查找分页数据
List<T> FindListPage<T>(string SQL, int PageSize, int PageNum, string OrderBy)
查找联合查询数据
DataTable FindView(string SQL)
执行SQL语句
ExecuteSQL(string SQL)
查询单个对象数据
Object ExecuteScar(string SQL)
注:所有方法都提供了切换数据源的方法重载
事物相关
同库事物
string exceptionstr = string.Empty;
bool issuccess = dbutil.ExecuteTransition_SDB(delegate()
{
User user = new User();
user.UserGuid = "ceshi00992";
user.Name = "yanpeng";
user.LoginName = "15195007397";
user.PassWord = "123456";
user.Age = 26;
user.AddDate = DateTime.Now;
dbutil.Insert(user);
dbutil.ExecuteSQL("update User set Age=27");
}, out exceptionstr);
Console.WriteLine(issuccess);
分布式事物手动RollBack
string exceptionstr = string.Empty;
User user = new User();
user.UserGuid = "ceshi00992";
user.Name = "yanpeng";
user.LoginName = "15195007397";
user.PassWord = "123456";
user.Age = 26;
user.AddDate = DateTime.Now;
User user1 = dbutil.FindOne<User>("yanpeng19940119");
var orginalage = user1.Age;
bool issuccess = dbutil.ExecuteTransition_DDB_HandleRollBack(delegate()
{
dbutil.Insert(user, "Test_ConnectionString");
user1.Age = 44;
dbutil.Save(user);
throw new Exception("111111");
}, delegate()
{
dbutil.Remove(user, "Test_ConnectionString");
user1.Age = orginalage;
dbutil.Save(user);
}, out exceptionstr);
Console.WriteLine(issuccess);
分布式事物自动RollBack(只支持简单的insert,update,delete 完善中。。。)
string exceptionstr = string.Empty;
User user = new User();
user.UserGuid = "ceshi00992";
user.Name = "yanpeng";
user.LoginName = "15195007397";
user.PassWord = "123456";
user.Age = 26;
user.AddDate = DateTime.Now;
User user1 = dbutil.FindOne<User>("yanpeng19940119");
var orginalage = user1.Age;
bool issuccess = dbutil.ExecuteTransition_DDB_AutoRollBack(delegate()
{
dbutil.Insert(user, "Test_ConnectionString");
user1.Age = 44;
dbutil.Save(user1);
throw new Exception("111111");
}, out exceptionstr);
Console.WriteLine(issuccess);
注:自动分布式事物使用时,一定要执行DocFile下的sql建表脚本,并配置日志表的连接GlobalTransition_ConnectionString
弱引用工具类的一些使用
DBRow row = new DBRow("User", "UserGuid", "6cc5b098-0966-4b21-b93e-bdd25fded3ea");
row.TraceSQL = true;
row["Name"] = "122yan";
row["LoginName"] = "heheheh";
row["AddDate"] = DateTime.Now;
row.Insert();
row["Age"] = 33;
row.Update();
row.Delete();
弱引用类型同库事物
string exceptionstr = string.Empty;
bool issuccess = DBRow.ExecuteTransition_SDB(delegate(DbTransaction Transition)
{
DBRow row = new DBRow("User", "UserGuid", "6cc5b098-0966-4b21-b93e-bdd25fded3ea");
row["Name"] = "122yan";
row["LoginName"] = "heheheh";
row["AddDate"] = DateTime.Now;
row.Transition = Transition;
row.Insert();
DBRow row1 = new DBRow("User", "UserGuid", "11223344");
row1.Transition = Transition;
row1.Delete();
throw new Exception("1111");
}, out exceptionstr);
Console.WriteLine(issuccess);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型