Katze - 简单的.net "ORM"框架

简介:

原文网址: http://www.blogwind.com/Wuvist/56788.shtml

Katze,是德文猫的意思,猫是很懒的……用Katze为偶这个“ORM”命名,是要强调其目的:少打代码。ORM加引号,是因为偶不认为它是真正的ORM,它只是个穿上ORM马甲的SqlHelper……它没有xml配置文件,默认映射类名为表名、属性名为列名。如果不一致,通过 Attribute修改。

Katze只支持单数字主键表 (最好还是自增,然后叫做id),不支持各种神奇的关系,只对外键有一定支持。没有缓存机制。企图支持多数据库,但目前只能在MSSQL上跑,还必须是2005版~纯VB.Net开发,只有.net 2.0版本!
 

呃,如果这样你还有兴趣,就继续看吧:

先来看看如何使用Katze:

1. 定义Model

 

< Table(PrimaryKeyName: = " index " ) >  _
Public   Class  Blogger
Inherits  Entity

< Field(Size: = 100 , ColumnType: = SqlDbType.NVarChar, ColumnName: = " id " ) >  _
Public  UserId  As  Field.Text
< Field(Size: = 100 , ColumnType: = SqlDbType.NVarChar) >  _
Public  nick  As  Field.Text
Public  DOB  As  Field.Smalldatetime

End Class

 

是的,需要Inherits Entiy, Katze属于丑陋的侵入性ORM。

2. 定义全局ConnHelper

Katze.Entity.DefaultConnHelper = New Katze.MSSqlConnHelper("你的数据库链接字符串")

配置就这两步,剩下的就是使用了:

创建一个新的Blogger?

 

Dim  MyBlogger  As   New  Blogger
MyBlogger.nick
=   " testaccount "
MyBlogger.Save()


 

 

查找主键为100的Blogger,修改其Nick并保存?

 

Dim  MyBlogger  As   New  Blogger
MyBlogger.FindById(
100 )
MyBlogger.nick 
=   " newnick "
MyBlogger.Save()

 

在webform中显示出最新的十个blogger?

Template:

 

< asp:Repeater  ID ="UserList"  runat ="server" >
< ItemTemplate >
< li > <% #Container.DataItem( " nick " ) %>
</ ItemTemplate >  
</ asp:Repeater >

 

Code Behind:

 

Dim  MyBlogger  As   New  Blogger
UserList.DataSource 
=  MyBlogger.Find( "" " [index] desc " 0 10 )
UserList.DataBind()

 

是的,Find这个方法定义得很丑陋……纯粹就是拼sql……偶在以后版本会改掉的……

定义多一个Model吧:

 

< Table(PrimaryKeyName: = " index " ) >  _
Public   Class  Articles
Inherits  Entity

< Field(Size: = 50 , ColumnType: = SqlDbType.VarChar) >  _
Public  title  As  Field.Text
Public  blogger  As  Blogger
< Field(ColumnType: = SqlDbType.Text) >  _
Public  content  As  Field.Text
Public  add_date  As  Field.DateTime

End Class

 

显示Blogger主键为100的最新10篇blog标题?

Template:

 

< asp:Repeater  ID ="ArticleList"  runat ="server" >
< ItemTemplate >
< li > <% #Container.DataItem( " blogger.nick " ) %> 写了 <% #Container.DataItem( " title " ) %>
</ ItemTemplate >  
</ asp:Repeater >

 

Code Behind:

 

Dim  MyBlogger  As   New  Blogger
MyBlogger.FindById(
100 )
ArticleList.DataSource 
=  MyBlogger.ReverseFind( GetType (Articles),  " [index] desc " 0 10 )
ArticleList.DataBind()

 

或者,

 

Dim  MyArticles  As   New  Articles
ArticleList.DataSource 
=  MyArticles.Find( " blogger=100 " " [index] desc " 0 10 )
ArticleList.DataBind()


 

 


嗯, 加紫色的部分就是Katze对外键的有限支持啦~假设说有N个Model,彼此通过外键连来连去……在Template中可以写:
<%#Container.DataItem("blogger.BloggerCategory.Language.DisplayName")%>

之类的,无限.下去~Katze会自动去查询相应的表。 
 

Katze暂时只是一个Prototype,偶企图通过开发它提高一下自己.net功力而已。现在贴出来,只是希望能够得到大家批评以便改进……要是有谁敢拿去用的话……后果自负!

开发Katze的时候,偶主要是参考了Django内置的ORM以及iBatisNbear等。当然,所谓参考,也就是随便瞅瞅,绝对不能说领悟了它们的精髓然后打造出Katze。

项目主页是在:http://code.google.com/p/katze/

暂时只有源码,没有文档之类的。


本文转自 Wuvist 51CTO博客,原文链接:http://blog.51cto.com/wuvist/847738

相关文章
|
2月前
|
SQL 开发框架 数据库
".NET开发者的超能力:AgileEAS.NET ORM带你穿越数据库的迷宫,让数据操作变得轻松又神奇!"
【8月更文挑战第16天】AgileEAS.NET是面向.NET平台的企业应用开发框架,核心功能包括数据关系映射(ORM),允许以面向对象方式操作数据库,无需编写复杂SQL。通过继承`AgileEAS.Data.Entity`创建实体类对应数据库表,利用ORM简化数据访问层编码。支持基本的CRUD操作及复杂查询如条件筛选、排序和分页,并可通过导航属性实现多表关联。此外,提供了事务管理功能确保数据一致性。AgileEAS.NET的ORM简化了数据库操作,提升了开发效率和代码可维护性。
48 5
|
2天前
|
设计模式 前端开发 C#
使用 Prism 框架实现导航.NET 6.0 + WPF
使用 Prism 框架实现导航.NET 6.0 + WPF
30 10
|
4天前
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始
|
1月前
|
Linux C# Android开发
一个开源、跨平台的.NET UI框架 - Avalonia UI
一个开源、跨平台的.NET UI框架 - Avalonia UI
|
1月前
|
机器学习/深度学习 人工智能 算法
ML.NET:一个.NET开源、免费、跨平台的机器学习框架
ML.NET:一个.NET开源、免费、跨平台的机器学习框架
|
1月前
|
消息中间件 开发框架 前端开发
YuebonCore:基于.NET8开源、免费的权限管理及快速开发框架
YuebonCore:基于.NET8开源、免费的权限管理及快速开发框架
|
2月前
|
测试技术 API 开发者
.NET单元测试框架大比拼:MSTest、xUnit与NUnit的实战较量与选择指南
【8月更文挑战第28天】单元测试是软件开发中不可或缺的一环,它能够确保代码的质量和稳定性。在.NET生态系统中,MSTest、xUnit和NUnit是最为流行的单元测试框架。本文将对这三种测试框架进行全面解析,并通过示例代码展示它们的基本用法和特点。
108 7
|
2月前
|
XML 开发框架 .NET
.NET框架:软件开发领域的瑞士军刀,如何让初学者变身代码艺术家——从基础架构到独特优势,一篇不可错过的深度解读。
【8月更文挑战第28天】.NET框架是由微软推出的统一开发平台,支持多种编程语言,简化应用程序的开发与部署。其核心组件包括公共语言运行库(CLR)和类库(FCL)。CLR负责内存管理、线程管理和异常处理等任务,确保代码稳定运行;FCL则提供了丰富的类和接口,涵盖网络、数据访问、安全性等多个领域,提高开发效率。此外,.NET框架还支持跨语言互操作,允许开发者使用C#、VB.NET等语言编写代码并无缝集成。这一框架凭借其强大的功能和广泛的社区支持,已成为软件开发领域的重要工具,适合初学者深入学习以奠定职业生涯基础。
94 1
|
1月前
|
JSON 测试技术 C#
C#/.NET/.NET Core优秀项目框架推荐榜单
C#/.NET/.NET Core优秀项目框架推荐榜单