在不新建实体类的情况下,通过配置信息去进行数据操作。(新建实体类是需要重新编译项目,而配置信息则可以随时编辑修改)
比如一个xml或者json,存有字段、关联的数据表名等其他信息,然后传给ORM或者做一些中间处理去读写数据。
例子:
数据表users有 username,username1,username2三个字段
配置信息如下:
u.json只查询username , u1.json只查询username1
var u = {table:"users",field:["username"]}//u.json var u1 = {table:"users",field:["username1"]}//u1.json
.net中有一个方法GetData(jObject _j),传入这个配置信息(u.json或者u1.json),然后通过ORM去读取数据返回。
ORM存在的意义之一不就在于能自动表结构和实体映射,节省时间,使人专注于业务代码吗?
现在你不想要了,据我所知,dapper有一种用法,
here:
Execute a query and map it to a list of dynamic objects
public static IEnumerable<dynamic> Query (this IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null, bool buffered = true)
This method will execute SQL and return a dynamic list.
Example usage:
var rows = connection.Query("select 1 A, 2 B union all select 3, 4");
Assert.Equal(1, (int)rows[0].A);
Assert.Equal(2, (int)rows[0].B);
Assert.Equal(3, (int)rows[1].A);
Assert.Equal(4, (int)rows[1].B);
因为突然想到了一个功能,所以就来问问。比如动态表单
这不就是mapreduce么。
odata这个是实现了的。我是个“懒”人,这种接口绝对不想写两次,直接在接口去上体现就行了。就是linq中的select哈。本身也就完全可以不需要任何多余的类,直接上X.Select(t=>new {Name=t.Name00})就OK的事,OData这个直接卸载WebApi上都可以。
EF大法哈,NHibenate也实现了Linq的,其他只要实现了Linq或者可以自己套上Linq都是可以的。
@花飘水流兮: x.select(t=>new {})这种情况下,x、t都是已知类。在非开发环境下,使用配置信息去表达一个实体类,比如我说 u1.json,里面的field就是对应的匿名类字段。这样的话对于ORM肯定是不认识的,能否做一些中间处理去达到效果呢?
@尾随前行: 当然很简单,但那还有什么意思呢,还叫什么ORM(自行翻译全词),写代码还怎么智能化提示。既然都可以不预定义格式,那还需要什么关系数据库。
很久以前写过一个很完美的框架,交给一群弱智,银联的项目,全部是你想象的根据传入对象和action run dynamic sql
你好, 这个框架是否方便借阅一下呢? :)
@尾随前行: 很遗憾,我们不认识没有交情,不能借阅
@A.Z: 好吧, 那能帮忙给指引个方向吗 ?
用emit 配合 xml 做定制化了。