Linq to Oracle 使用教程(九)ALinq 的扩展

 

点击这里返回目录

ALinq 在 Linq to SQL 的基本,做了一些扩展,使得它更为好用。

获取实体类的 DataContext 对象

选择Category 实体类,将 DataContext 设为 True 。

 2010120412093010.jpg

运行下面的代码:

 
  
static void Main( string [] args)
{
var dc
= new NorthwindDataContext() { Log = Console.Out };
var category
= dc.Categories.First();
Console.WriteLine(category.DataContext);
}

运行结果:

2010120412121658.jpg

很明显,可以看到 category.DataContext 对象不为空,但是我们并没有在代码中给 category.DataContext 赋值,它怎么会不为空呢?我来看一下代码生成器生成的代码。

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
// This method is called by the dataContext when the entity is created.
private void SetDataContext(ALinq.DataContext dataContext)
{
this .DataContext = ((NorthwindDataContext)(dataContext));
}

public NorthwindDataContext DataContext
{
get
{
return this ._DataContext;
}
private set
{
this ._DataContext = value;
}
}

我们主意到 SetDataContext 这个方法,当一个实体被 DataContext 创建后,DataContext 便会通反射检索名称 SetDataContext 的方法,如果存在,则调用该方法。所以,尽管我闪并没有对 category.DataContext 赋值,但 DataContext 却通过调用 SetDataContext 对它进行了赋值。

批量更新、删除

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
static void Main( string [] args)
{
var dc
= new NorthwindDataContext() { Log = Console.Out };
dc.Categories.Update(o
=> new Category { Categoryname = " New Name " }, o => o.Categoryid == - 1 );
dc.Categories.Delete(o
=> o.Categoryid == - 1 );
}

运行结果:

2010120416184793.jpg

  

使用 Linq 表达式插入数据

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
static void Main( string [] args)
{
var dc
= new NorthwindDataContext() { Log = Console.Out };
var categoryID
= dc.Categories.Max(c => c.Categoryid) + 1 ;
dc.Categories.Insert(o
=> new Category
{
Categoryid
= categoryID,
Categoryname
= " Category Name " ,
Description
= " Description "
});
}

运行结果:

2010120416322379.jpg

点击这里返回目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值