.net 中有没有ORM框架支持自定义配置信息进行数据操作

2020-01-10 10:56发布

  在不新建实体类的情况下,通过配置信息去进行数据操作。(新建实体类是需要重新编译项目,而配置信息则可以随时编辑修改)

  比如一个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 NetCore
4条回答
Deceive 欺骗
2楼-- · 2020-01-10 11:15

很久以前写过一个很完美的框架,交给一群弱智,银联的项目,全部是你想象的根据传入对象和action run dynamic sql

查看更多
一夜七次
3楼-- · 2020-01-10 11:18

用emit 配合 xml 做定制化了。

查看更多
Explosion°爆炸
4楼-- · 2020-01-10 11:20

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);

https://github.com/StackExchange/Dapper

查看更多
时光不老,我们不散
5楼-- · 2020-01-10 11:23

这不就是mapreduce么。

odata这个是实现了的。我是个“懒”人,这种接口绝对不想写两次,直接在接口去上体现就行了。就是linq中的select哈。本身也就完全可以不需要任何多余的类,直接上X.Select(t=>new {Name=t.Name00})就OK的事,OData这个直接卸载WebApi上都可以。

查看更多
登录 后发表回答