Dapper-dot-net“无列名”

发布于 2024-12-03 04:04:26 字数 521 浏览 1 评论 0原文

我的结果集可能如下所示:

ID    (no column name)  anotherID
----  ----------------  ----------
1        super            3
1        super            4
3        duper            6
4        really           7
4        really           8

我有 2 个问题:

第一: 如何对没有名称的列使用 dapper?

第二:我想要建立一个父子关系,这样我就可以得到 3 个对象,每个对象都有一个 anotherID 的列表,例如:

public class MyObject
{
   public int ID
   public string Name
   public int[] Children
}

I have a result set that might look like this:

ID    (no column name)  anotherID
----  ----------------  ----------
1        super            3
1        super            4
3        duper            6
4        really           7
4        really           8

I have 2 issues:

First: How do I use dapper with a column with no name?

Second: I want to have a parent child relationship such that I get 3 objects each with a list of anotherID's for example:

public class MyObject
{
   public int ID
   public string Name
   public int[] Children
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

阳光下慵懒的猫 2024-12-10 04:04:26

嗯,dapper 不支持未命名的列。我从来没有真正看到他们的理由。

我想我们可以建立对以下内容的支持:

class Foo { [ColumnNumber(1)] public string Name {get;set;} }

问题是它引入了一种非常脆弱的查询方法,我非常不喜欢这种方法,将指令传递给Query也同样笨拙。

但是,如果您愿意改变获取结果的方式,则可以解决此问题。

var grid = QueryMultiple(@"set nocount on 
declare @t table(Id int, Name nvarchar(max), AnotherId int)

insert @t
exec proc

set nocount off 
select Id, Name from @t
select Id, AnotherId from @t
");

然后使用此处的技术进行多重映射: Multi-Mapper创建对象层次结构

Well, un-named columns are not supported by dapper. I never really saw a reason for them.

I guess we could build support for:

class Foo { [ColumnNumber(1)] public string Name {get;set;} }

The trouble is that it introduces a very fragile method of querying which I strongly dislike, passing a directive to Query is just as clunky.

However, if you are happy to change the way you grab the results you could work around this.

var grid = QueryMultiple(@"set nocount on 
declare @t table(Id int, Name nvarchar(max), AnotherId int)

insert @t
exec proc

set nocount off 
select Id, Name from @t
select Id, AnotherId from @t
");

Then use the technique here to multi map: Multi-Mapper to create object hierarchy

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文