是否ORMLite支持C#动态类型? [英] Does ORMLite support dynamic Type of C#?

查看:201
本文介绍了是否ORMLite支持C#动态类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我期待到ORMLite从ServiceStack什么,我想在这里做的是调用存储过程而这又回到这肯定不会被绑定到任何域对象,而且还可能会或可能不会有一个DTO很多很多行反对地图。我在想,如果我可以把它绑定到一个类型。然而,这听起来像ORMLite不支持动态类型在这个时候绑定。在这一点上确实ORMLite支持?

I am looking into ORMLite from ServiceStack and what I am trying to do here is that call a stored procedure which in turn return many many rows which definitely would not be bound to any domain object but also may or may not have a dto object to map with. I was wondering if I can bind it to a type. However, it sounds like ORMLite does not support dynamic type binding at this time. Does ORMLite support at this point?

推荐答案

在设计OrmLite不支持编组动态类型,并预计结果集映射到类型化POCO的。

By design OrmLite does not support marshalling to dynamic types, and expects resultsets to mapped to Typed POCO's.

虽然它确实有专门的API访问的动态结果集 列表<对象>

Although it does have specialized API's to access Dynamic Result Sets using List<object>:

db.Select<List<object>>(db.From<Poco>()
  .Select("COUNT(*), MIN(Id), MAX(Id)"))[0].PrintDump();

/* Output */
[
    10,
    1,
    10
]

或使用词典<字符串对象> ,例如:

db.Select<Dictionary<string,object>>(db.From<Poco>()
  .Select("COUNT(*) Total, MIN(Id) MinId, MAX(Id) MaxId"))[0].PrintDump();

/* Output */
{
    Total: 10,
    MinId: 1,
    MaxId: 10
}

除了能够映射到松类型的.NET集合:

As well as being able to map into loose-typed .NET collections:

Dictionary<int, string> trackIdNamesMap = db.Dictionary<int, string>(
    "select Id, Name from Track")

Dictionary<int, List<string>> albumTrackNames = db.Lookup<int, string>(
    "select AlbumId, Name from Track")

List<string> trackNames = db.Column<string>("select Name from Track")

HashSet<string> uniqueTrackNames = db.ColumnDistinct<string>("select Name from Track")



使用精致小巧的查询



OrmLite确实有短小精悍 支持动态效果的:

using ServiceStack.OrmLite.Dapper;

using (var db = new SqlConnection(@"Data Source=... etc."))
{
    db.Open();

    var p = new DynamicParameters();
    p.Add("@params", "Id=21");

    IEnumerable<dynamic> dynamicResults = db.Query(sql:"GetPivotData", param: p,
        commandType:CommandType.StoredProcedure);
}

这篇关于是否ORMLite支持C#动态类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆