东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

CodeSmith 发布代替和扩展 LINQ to SQL 的工具——PLINQO

  • 2007-09-02
  • 本文字数:1830 字

    阅读完需:约 6 分钟

CodeSmith 最近发布了一套用于 CodeSmith 和 Visual Studio 2008 的模板,叫做 PLINQO 或 Professional LINQ to Objects。这些模板被用于补充微软即将发布的 LINQ to SQL 的设计功能,其包含了如下很多优秀的特性:

  • 从数据库结构生成或更新 LINQ to SQL 的 dbml 文件

  • 包括所有表、存储过程、函数和视图,并能基于正则表达式来排除特定对象

  • 能自动删除对象的前缀和后缀(如:tbl_ 和 usp_)

  • Dbml 文件依然能通过普通的 Visual Studio 2008 设计器来自定义

  • Dbml 文件能被当前数据库结构在保持自定义信息的情况下进行同步更新(参看 Safe Attributes)

  • 生成 LINQ to SQL 的 DataContext 类

  • 生成 LINQ to SQL 的实体类

  • 为每个实体生成一个文件,而不是只生成一个大型的文件

  • 生成分部类,用于书写自定义代码,以避免被自动生成的代码覆盖

  • 生成的实体文件作为和他们相关的自定义实体文件的后置代码文件被添加到项目里

  • 生成实体管理类

  • 添加可定制的业务逻辑引擎来执行实体验证、业务和安全规则

  • 为基于主键、外键和索引的通用查询提供访问

  • 通用查询可暴露为 IQueryable 以便能被扩展

  • 所有模板都能被自定义以满足你的需要

InfoQ 最近有机会采访了 Eric J. Smith(CodeSmith Tools LLC 的创始人)和 PLINQO 有关的事情。Eric 解释了发布 PLINQO 的目的:

很多开发人员,包括我们自己,不喜欢黑盒方式。所以我们创建这些模板的目的就是消除黑盒,并允许我们自己和其他开发人员能够自定义 LINQ to SQL 设计器的输出内容。我们也希望能扩展生成类的功能,包括业务逻辑、授权逻辑和其他特性。

在 PLINQO 的宣布博客随笔中,提到他们意欲替换和扩展包含在 Visual Studio 2008 中的 LINQ to SQL 设计器。因为微软有他们自己的 LINQ to objects 和 LINQ to SQL 技术,InfoQ 问到他们的模板是否真能作为 LINQ to SQL 的替代品或 LINQ to Objects 替代品,并问到为什么取名和微软的重叠?Eric 答复:

PLINQO 是个 LINQ to SQL 替代品,但和 LINQ to Objects 没有关系。我们知道这可能会引起一些混淆,但是我们真的需要一个有趣的名称,并且我们也非常喜欢 PLINQO 这个名字。PLINQO 就像一种“正确价格”(the Price is Right)的游戏,Plinko,恰好就是“正确价格”游戏中最火爆的一个。:-)

在问到为什么开发人员会采用你们的模板,而不是简单使用微软提供的功能:

使用 PLINQO 模板而不用设计器有几个优点。下面是一个主要原由的列表: - 能轻易地从数据库中生成整个.dbml 文件,然后能在数据库结构改变的时候重新生成.dbml 文件,并同时保留任何你做出的自定义信息,如实体、熟悉和关系命名。假设使用设计器的话,如果你改变了数据库结构,你需要删除某个实体并重新添加它以得到新的列或数据类型变化,这样会让你失去任何你做出的自定义信息。另外,使用模板允许你排除不想要的表、存储过程和视图,其通过运用过滤器表达式实现;自动的剥离和清理实体和属性的名称,如数据库结构可能使用的前缀和后缀(比如:tbl_Customer 变为 Customer)

  • 业务逻辑引擎运行你执行诸如属性长度规则、必需字段规则、正则表达式数据验证规则以及其他包括授权规则在内的内置规则等事情。数据上下文对象中的 SubmitChanges 方法将针对你变更集合中任何实体自动运行这些规则。如果不是所有规则都满足,那么一个包含了违反规则列表的 BrokenRulesException 异常将被抛出。
  • 每个实体都生成了一个管理类,其封装了一个实体能完成的所有动作。已知的通用动作,如通过主键、索引和外键检索实体的动作都会被生成。任何自定义的动作也可以被添加,并在重新生成期间将被保留。虽然 LINQ 让你实现贯穿整个应用程序的数据访问逻辑变得很容易,我们仍认为它的设计是比较差的,所以这就是我们包含进管理类的原因。

这个模板能工作于 CodeSmith 4.0+ 版本(参看 InfoQ 相关报道),也能工作在安装了CodeSmith4.1 的VS2008 中。未来的版本,CodeSmith 打算添加单元测试、UI 生成和Web Serice 的生成支持。Paul Welter 是这个模板的领头开发人员。Eric 同时提到模板正在逐步完善当中,任何反馈都欢迎。我们将欢迎任何反馈和想法。可以查看 CodePlex 上的项目 Quick Start

PLINQO 是一个优秀的例子,它体现了我们所期望的那样——CodeSmith 和其他第三方能为微软的 LINQ 技术添加额外的价值。往往就是如此,供应商在看到能为一个基础性技术进行加强的领域后,就为开发人员工作更轻松迈出了步伐。PLINQO 就是为将来更多的工作走出的非常好的第一步。

查看英文原文: CodeSmith’s PLINQO: Replace & Extend LINQ to SQL

2007-09-02 23:102850
用户头像

发布了 254 篇内容, 共 53.3 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

HarmonyOS玩转ArkUI动效 - 水母动画

Halifax

前端 动画 HarmonyOS OpenHarmony arkui

极客时间运维进阶训练营第七周作业

老曹

2022-12-11:行程和用户。以下为输出结果,请问sql语句如何写? +------------+-------------------+ | Day | Cancellation

福大大架构师每日一题

数据库 福大大

小令案例 | 互联网消费分期产品引入令牌云服务,大幅提升进件转化

令牌云数字身份

身份认证 分布式数字身份 成功案例

Compose把Text组件玩出新高度

Halifax

android 前端 kotlin Compose android jetpack

啃透这500页高并发笔记薪资涨了20K,并连收天猫,京东等5个Offer

钟奕礼

Java 程序员 java面试 java 编程

记一次Mysql大数据分页优化问题

石臻臻的杂货铺

MySQL 数据库

分布式锁主动续期的入门级实现-自省 | 简约而不简单

小小怪下士

Java 程序员 分布式 分布式锁

从德鲁克管理实践看服务化架构

agnostic

微服务

开始用ChatGPT写作

SkyFire

ChatGPT

灵魂拷问,你真的了解DNS吗?

蔡农曰

互联网 前端 后端 计算机网络

学习编程必须知道的三个网站

邱比特讲编程

GitHub 编程 Google Stack Overflow 编程工具

React源码分析7-state计算流程和优先级

flyzz177

React

非一线工程管理者的一对一沟通

俞凡

领导力 管理

Verilog 的连续赋值

攻城狮Wayne

Verilog Verilog语法 连续赋值

云与开源,共植数字世界的根

Apache Flink

大数据 flink 实时计算

运维进阶训练营 -W07H

赤色闪电

运维

浅谈如何在小红书和知乎两大平台做好引流推广

石头IT视角

架构实战 - 模块 2 作业

mm

微信朋友圈 #架构实战营

架构实战营模块二作业

张Dave

关于ChatGPT的一切;CUDA入门之矩阵乘;PyTorch 2.0发布|AI系统前沿动态

OneFlow

人工智能 深度学习 AI

工赋开发者社区 | 架构瓶颈原则:用注意力probe估计神经网络组件提供多少句法信息

工赋开发者社区

流处理基础概念-窗口与时间

穿过生命散发芬芳

流处理 12月月更

字节大神熬夜整理MyBatis+Redis+Kafka+spring源码与实战技术齐飞

钟奕礼

Java java编程 程序员、

微信朋友圈高性能复杂度

闲人Eric

架构实战营

设计模式之美——单一职责(Single Responsibility Principle)

GalaxyCreater

设计模式

网络编程与通信原理

Java 架构

React源码分析8-状态更新的优先级机制

flyzz177

React

工赋开发者社区 | 65页数字化工厂规划与建设详细方案 !

工赋开发者社区

通过假设地图进行产品待办列表排序

Bruce Talk

Agile User Story Product Owner 敏捷、

架构训练营作业-模块2

张建闯

架构实战营

CodeSmith发布代替和扩展LINQ to SQL的工具——PLINQO_.NET_Robert Bazinet_InfoQ精选文章