• subsonic杂记


    使用subsonic有一段时间了,不知道园子里有多少人在用或者是关注这个ORM,中文的资料还是不多,subsonic 3.0完全支持Linq,但是目前还是Beta阶段,还有很多bug,所以一直都是用subsonic 2.1 ,这里小小的总结一下,也可以说是备忘吧。

    一些Subsonic的一些链接:

    google项目主页: http://code.google.com/p/subsonicproject/(注意不是codeplex了,官方网站已经宣布移到google下了)

    作者博客:http://blog.wekeroad.com/

    官方网站:http://subsonicproject.com/


    1.关于代码生成工具sonic.exe

    该工具位于安装目录的SubCommander目录下,官方的webCast演示的是针对包含有web.config和app.config的项目,
    但是我们的数据访问层是另一个类库的项目,并没有包含任何配置文件,该怎么使用呢sonic.exe?
    "C:\Program Files\SubSonic\SubSonic 2.1 Final\SubCommander\sonic.exe" generate /config C:\MyProjectDirectory\App.Config /out C:\MyProjectDirectory
    就可以了。或者直接使用配套的GUI工具SubStage读取配置文件生成代码。

    2.修改,和删除一个对象
    实体的Save()方法,判断修改与插入操作主要体现在实体的IsNew属性,
    如果IsNew==true,则执行的是插入操作
    反之执行update修改操作

    当实例化一个实体时,如果直接FlowAction flow = new FlowAction();
    此时flow.IsNew等于true,意味着flow.Save()执行的是insert操作.

    FlowAction flow = new FlowAction(1);
    此时flow.IsNew等于false,意味着flow.Save()执行的是update操作.

    除此之外,可以用[DataObjectMethod(DataObjectMethodType.Update, true)]在方法上做标记,
    [DataObjectMethod(DataObjectMethodType.Update, true)]
    void add()
    {
    }
    DataObjectMethodType.Update和DataObjectMethodType.Insert分别表示其对应的修改和插入操作

    3.使用事务比较快捷的方式

    List<Insert> queries = new List<Insert>();
    queries.Add(
    new Insert().Into(Northwind.Region.Schema).Values("test1"));
    queries.Add(
    new Insert().Into(Northwind.Region.Schema).Values("test2"));
    queries.Add(
    new Insert().Into(Northwind.Region.Schema).Values("test3"));
    queries.Add(
    new Insert().Into(Northwind.Region.Schema).Values("test4"));
    queries.Add(
    new Insert().Into(Northwind.Region.Schema).Values("test5"));
    queries.Add(
    new Insert().Into(Northwind.Region.Schema).Values("test6"));
    queries.Add(
    new Insert().Into(Northwind.Region.Schema).Values("test7"));

    //execute in a transaction
    SqlQuery.ExecuteTransaction(queries);

    其实使用得比较多的应该是using(...){}这种事务方式

    using (TransactionScope ts = new TransactionScope())
    using (SharedDbConnectionScope scope = new SharedDbConnectionScope())
    {
        .数据库操作代码
    }

    一定要注意先后顺序,顺序反了是不会起作用的,官方的单元测试以及文档都是写反了的,这里要强调一下。

  • 相关阅读:
    中国科学院大学数字集成电路作业开源——组合逻辑章节
    中国科学院大学数字集成电路作业开源——时序逻辑与存储器章节
    模拟集成电路实践记录_共源极差分放大器
    中国科学院大学数字集成电路作业开源——64位FFT/IFFT数字逻辑运算电路的Verilog实现
    中国科学院大学数字集成电路作业开源——函数运算器章节
    中国科学院大学数字集成电路作业开源——算数逻辑章节
    【20220306】连岳摘抄
    【20220311】连岳摘抄
    【20220304】连岳摘抄
    【20220312】连岳摘抄
  • 原文地址:https://www.cnblogs.com/jintan/p/1449098.html
Copyright © 2020-2023  润新知