[ActiveRecord] 之二:常用方法

看下面的例子
[ActiveRecord("Users")]
public class User : ActiveRecordBase
{
  public User() {}

  public User(string name) : this()
  {
    this.name = name;
  }

  private int id;

  [PrimaryKey(PrimaryKeyType.Identity)]
  public int Id
  {
    get { return id; }
    set { id = value; }
  }

  private string name;

  [Property(Unique=true)]
  public string Name
  {
    get { return name; }
    set { name = value; }
  }
}

一般情况下,系统代码生成工具(Castle.ActiveRecord.Generator.exe)会自动生成以下几个静态方法。
public static void DeleteAll()
{
  ActiveRecordBase.DeleteAll(typeof(User));
}
 
public static User[] FindAll()
{
  return ((User[])(ActiveRecordBase.FindAll(typeof(User))));
}
 
public static User Find(int Id)
{
  return ((User)(ActiveRecordBase.FindByPrimaryKey(typeof(User), Id)));
}

很显然这几个方法并不能满足需要,接下来我们补充几个。
public static User Find(string name)
{
  ScalarQuery query = new ScalarQuery(typeof(User), "from User user where user.Name=?", name);
  return ExecuteQuery(query) as User;
}

public static void Delete2()
{
  DeleteAll(typeof(User), "id > 5");
}

public static string GetName(int id)
{
  ScalarQuery query = new ScalarQuery(typeof(User), "select user.Name from User user where user.Id=?", id);
  return ExecuteQuery(query) as string;
}

public static User[] FindAll2(int id)
{
  SimpleQuery query = new SimpleQuery(typeof(User), "from User user where user.Id < ?", id);
  return ExecuteQuery(query) as User[];
}

需要注意的是ActiveRecord(NHibernate)删除记录时,并不是使用单个SQL语句批量删除,而是使用主键依次删除每条记录。晕~~~ 要是删除1000万条记录就得执行1000万条Delete SQL语句。晕~~~~~~~
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值