LINQ TO SQL很好很强大,它几乎包含了我们能够想到的所有与数据库有关的操作,甚至也包含了一些我们可能都没有想到的。

但不管怎样,也许我们需要在LINQ TO SQL的操作中添加一个自定义业务逻辑,例如在插入某个实体的时候编写日志等等。如何实现这样的功能呢?

其实这一点,LINQ TO SQL在设计的时候也考虑到了。我们可以打开那个dtml文件的designer.cs文件,我们发现有些隐藏的代码

首先,我们看到NorthwindDataContext这个类型是一个局部类型(Partial Class),而且上述定义的一些方法也是局部方法(Partial Method)

局部方法是C# 3.0的新增特性。它使用在如下场景:

某个方法可有可无。通过partial 关键字声明的目的是,可以让其他地方代码可以调用它。但如果该方法最终没有被实现,那么包括方法声明以及调用代码都会被删除掉。

这个特性与虚方法,抽象方法都不同。

假设我们需要在InsertCustomer的时候添加一些业务逻辑,那么该怎么做呢?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Model
{
    public partial class NorthwindDataContext
    {
        partial void InsertCustomer(Customer instance)
        {
           //这里可以实现自己的保存逻辑,根据传入的一个Customer的实例

this.ExecuteCommand("Insert Into.....");
            //还可以写日志,等等
        }
    }
}

【注意】一旦我们这样做了,那么插入Customer的逻辑就全部由我们来负责了。你需要确保这里面的代码是完整的

protected void addcustomer_Click(object sender, EventArgs e)
{
    Model.NorthwindDataContext db = new Model.NorthwindDataContext(connectionString);
    Model.Customer c = new Model.Customer()
    {
        CustomerID = "AAAAAS",
        CompanyName = "Xizhang"
    };

db.Customers.InsertOnSubmit(c);
    db.SubmitChanges();

}

在db.SubmitChanges方法被调用后,会自动调用我们写的那个InsertCustomer方法

本文由作者:陈希章 于 2009/7/16 22:32:03 发布在:http://www.cnblogs.com/chenxizhang/
本文版权归作者所有,可以转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
更多博客文章,以及作者对于博客引用方面的完整声明以及合作方面的政策,请参考以下站点:陈希章的博客中心

转载于:https://www.cnblogs.com/chenxizhang/archive/2009/07/16/1525181.html

LINQ : 如何为LINQ TO SQL实现自定义业务逻辑相关推荐

  1. 知识点10--如何自定义书写数据业务逻辑代码

    前八章知识点我们对数据的操作都是使用spring boot框架封装的API进行的查询操作,我在前边的知识点中也说了,后面会介绍如何自定义业务逻辑的查询,那本篇就完成这一目标. 首先我们要明白为何要自定 ...

  2. LINQ体验(6)——LINQ to SQL语句之Join和Order By

    LINQ体验(6)--LINQ to SQL语句之Join和Order By Join操作 适用场景:在我们表关系中有一对一关系,一对多关系,多对多关系等.对各个表之间的关系,就用这些实现对多个表的操 ...

  3. 光脚丫学LINQ(014):LINQ to SQL简介

    视频演示:http://u.115.com/file/f29f7838f6 LINQ to SQL 是 .NET Framework 3.5 版的一个组件,提供了用于将关系数据作为对象管理的运行时基础 ...

  4. LINQ系列:LINQ to SQL Exists/In/Any/All/Contains

    1. Any 返回没有Product的Category var expr = from c in context.Categorieswhere !c.Products.Any()select c; ...

  5. Pro LINQ 之三:LINQ to DataSet

    写在前面 将LINQ to DataSet单独放一篇,是因为随后的LINQ to SQL默认只支持MS SQL Server.只有LINQ to DataSet能在没有相应Data Provider帮 ...

  6. 从LINQ开始之LINQ to Objects(上)

    LINQ概述 LINQ,语言集成查询(Language Integrated Query),它允许使用C#或VB代码以查询数据库相同的方式来操作不同的数据源. LINQ体系结构 从上图可以看出,LIN ...

  7. 【LINQ语句】LINQ语句

    前言 LINQ(Language Integrated Query)语言集成查询是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同的方式 ...

  8. Linq初级班 Linq To XML体验(基础篇)

    LINQ To XML体验(基础) 这两天开始学习LINQ to XML的知识,我会继续把自己的感想和示例发布给初学者们学习的,一样欢迎高手们多多指点,请勿使用过激语言,针锋相对,我是个初学者,自知还 ...

  9. LINQ圣经——《LINQ实战》

    媒体评论 本书作者是 LINQ 社区中的重要成员,他们在书中展示了这一技术的精髓--快去享受这一盛宴吧. --Matt Warren ,微软主架构师, LINQ 之父 LINQ 方面的杰作!深入.全面 ...

最新文章

  1. 【实用】一个移动端简单的UI弹窗组件,虽算不上高大上,但至少耐看
  2. MediaPipe:Google Research 开源的跨平台多媒体机器学习模型应用框架
  3. 妈呀!GitChat 发布 1.9 版本更新公告,这个红色简直亮瞎了我的眼...
  4. mysql的innodb数据库引擎详解
  5. php去除html标签_用PHP操作DOM (一)
  6. 计算机二级办公室软件应用选择题,计算机二级,办公软件高级应用技术有没有选择题和判断题的...
  7. 看得懂的设计模式 享元模式python3 最基本(简单)实现
  8. 浅谈社区电子商务的发展及其技术应用
  9. 数据分析究竟有没有价值?看完这个案例你就明白了
  10. 通过复制oracle软件方式安装oracle数据库
  11. WINDOWS SERVER 2012标准版密钥
  12. js监听中文拼音输入开始输入和输入完成的事件,用input事件用拼音输入法的大坑,由这两个事件来解决
  13. win10主机ping不通win10虚拟机
  14. W10系统下 获取 TrustedInstaller 高级权限.
  15. 公历转农历C语言课程设计,(只为学习)公历转农历代码以完成,请高手在此代码基础上写出个农历转公历的代码出来...
  16. Acwing-4454. 未初始化警告
  17. Wavesurfer.js 生成音频波形图
  18. html语言web应用开发,使用HTML5框架加速Web开发
  19. android 开机直接运行app并当做手机桌面
  20. vba 添加outlook 签名_如何在Outlook中使用宏发送邮件,并且使用已有签名?

热门文章

  1. 【前端_js】JavaScript知识点总结
  2. linux每日命令(36): wc命令
  3. Linux source命令(转)
  4. check_mk通用应用检测插件
  5. 【BZOJ-2342】双倍回文 Manacher + 并查集
  6. .Net Framework 各个版本新特性总结 (一)
  7. Direct3D Draw函数 异步调用原理解析
  8. Android 布局开发之百分比布局、弹性布局
  9. Eclipse主题更换方法
  10. 【剑指offer-Java版】17合并两个排序链表