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 @     阅读(2109)  评论(24编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
IT民工
点击右上角即可分享
微信分享提示