ORM的思考2 对象建模


ORM的思考2 对象建模


单刀直入

我认为,目前的ORM模型,最大的一个问题,就是没有分离数据和元数据。

在关系数据库里面,SQL都分至少有2种,操作数据,操作元数据(Schema)。特别是后者:

 

CREATE TABLE TABLE1
{
ID 
TEXT

}

 

然而,在ORM中这个优秀的传统没被继承,变成了一大堆的attribute, xml配置文件。一个Class经常看见:

 

class Person
{
[PrimaryKey]
string name;

[Column]
string address;

.
}

多么的混乱,一个用户为了使用对象,首先就要忙着“部署”元数据。当稍微的一点改变,立刻焦头烂额。。。(这个对象的字段到底是哪张表的??? :-))


我的IDEA - 面向对象的元数据操作

在c#里面,一个对象包含了域和方法,域就是元数据,例如下面类中的name, card等。

 

class Person
{
string name;
Card card;
List
<Email> emailS;
}

class Email
{
string address;
}

class Card
{
string name;
}

 


那么创建这个类的命令:

 

CREATE OBJECT EMAIL
{
ADDRESS STRING
}

CREATE OBJECT CARD
{
NAME STRING
}

CREATE OBJECT PERSON
{
NAME STRING,
CARD OBJECT,
EMAILS COLLECTION
}

 

多么的清楚!

通过创建了元数据,用户可以使用非常干净的对象了。我甚至可以:

 

DROP OBJECT EMAIL;

ALTER OBJECT PERSON ADD EMAIL COLLECTION

ALTER OBJECT PERSON ADD PRIMARYKEY NAME

ALTER OBJECT PERSON DROP EMAIL

ALTER OBJECT PERSON DROP PRIMARYKEY NAME

不知道大家怎么想。如果不同意的请告诉我一个原因或者解决方案。谢谢!


posted @ 2007-10-19 14:24    阅读(2106)  评论(24编辑  收藏  举报
IT民工