相关疑难解决方法(0)

Multi-Mapper用于创建对象层次结构

我一直在玩这个,因为它看起来感觉很像记录的帖子/用户示例,但它略有不同,并不适合我.

假设以下简化设置(联系人有多个电话号码):

public class Contact
{
    public int ContactID { get; set; }
    public string ContactName { get; set; }
    public IEnumerable<Phone> Phones { get; set; }
}

public class Phone
{
    public int PhoneId { get; set; }
    public int ContactID { get; set; } // foreign key
    public string Number { get; set; }
    public string Type { get; set; }
    public bool IsActive { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望最终能够返回一个与多个Phone对象联系的东西.这样,如果我有2个联系人,每个联系人有2个电话,我的SQL将返回一个连接,作为结果集共4行.然后Dapper将弹出2个接触对象,每个接触对象有两部手机.

这是存储过程中的SQL:

SELECT *
FROM Contacts
    LEFT …
Run Code Online (Sandbox Code Playgroud)

dapper multi-mapping

75
推荐指数
7
解决办法
5万
查看次数

使用Dapper.NET在一次往返中使用多个SQL语句

ADO.NET中有一个很好的功能,允许您在一次往返中将多个SQL语句发送到数据库,并接收所有语句的结果:

var command = new SqlCommand("SELECT count(*) FROM TableA; SELECT count(*) FROM TableB;", connection);

using(var reader = command.ExecuteReader())
{
    reader.Read();
    resultA = reader.GetInt32(0);
    reader.NextResult();
    reader.Read();
    resultB = reader.GetInt32(0);
}
Run Code Online (Sandbox Code Playgroud)

Dapper.NET中是否有类似的功能?

.net c# sql sql-server dapper

52
推荐指数
2
解决办法
4万
查看次数

从ADO.NET调用Oracle时批处理多个select语句

我想批处理多个select语句以减少到数据库的往返.代码看起来像下面的伪代码.它在SQL Server上运行完美,但在Oracle上不起作用 - Oracle抱怨sql语法.我已经浏览了一下,我发现从Oracle返回多个结果集的唯一例子是使用存储过程.是否可以在Oracle中执行此操作而不使用存储过程?我正在使用MS Oracle数据提供程序,但如果需要,可以使用ODP.Net.

var sql = @"
            select * from table1
            select * from table2
            select * from table3";

DbCommand cmd = GetCommand(sql);
using(var reader = cmd.ExecuteReader())
{
   dt1.Load(reader);
   reader.NextResult();
   dt2.Load(reader);
   reader.NextResult();
   dt3.Load(reader);
}
Run Code Online (Sandbox Code Playgroud)

c# oracle ado.net resultset

15
推荐指数
2
解决办法
2万
查看次数

使用ORMLite和输出参数的ServiceStack MARS(多个活动结果集)

ServiceStack ORMLite很棒,我通常避免使用ORM心态,而是更喜欢构建数据库,因为构建数据库而不是1:1类模型是有意义的.也就是说,有几件事我似乎遇到了困难,我确信这只是我无知的光芒.

第一:

有没有办法使用ORMLite管理多个结果集?我知道可以使用Dapper使用QueryMultiple方法,但无论出于何种原因,我都有时间搞清楚如何使用ServiceStack的内置Dapper实现.

第二:

有没有办法使用ORMLite在存储过程调用中返回输出参数?

理想情况下,我想避开MARS和输出参数,理想情况下我想生活在一个理想的世界:)

我正在使用.NET framework 4.5,SQL Server 2008 R2和ServiceStack 3.9.46.

stored-procedures sql-server-mars servicestack dapper ormlite-servicestack

7
推荐指数
1
解决办法
2531
查看次数

Slapper.Automapper 与 Dapper.net 使用 Guid Id

我需要使用 Dapper.net 将一对多扁平化 SQL 查询映射到嵌套对象中。

Slapper.Automapper 似乎是做到这一点的好方法;正如这个问题的答案中所详细说明的:

如何在 Dapper.Net 中编写一对多查询?

我使用 Guid 得到的错误数据集: 在此输入图像描述

public string MrFlibble3()
{
    using (var connection = new SqlConnection(Constr))
    {
        Slapper.AutoMapper.Cache.ClearInstanceCache();

        const string sql = @"SELECT tc.[IDG] as ContactIdg
                                ,tc.[ContactName] as ContactName
                                ,tp.[Idg] AS TestPhones_PhoneIdg
                                ,tp.[ContactIdg] AS TestPhones_ContactIdg
                                ,tp.[Number] AS TestPhones_Number
                                FROM TestContact tc
                                INNER JOIN TestPhone tp ON tc.Idg = tp.ContactIdg";

        // Step 1: Use Dapper to return the  flat result as a Dynamic.
        dynamic test = connection.Query<dynamic>(sql);

        // Step 2: Use Slapper.Automapper for mapping …
Run Code Online (Sandbox Code Playgroud)

dapper slapper.automapper

4
推荐指数
1
解决办法
2896
查看次数

从SQL Server 2008中的T-SQL函数返回多个表

您可以从SQL Server 2008中的T-SQL函数返回单个表.

我想知道是否可以返回多个表.

场景是我有三个查询过滤3个不同的表.每个表都根据我想从函数返回的5个过滤表进行过滤; 而不是在每个查询中复制和粘贴他们的创建.

这是复制和粘贴的简单示例:

FUNCTION GetValuesA(@SomeParameter int) RETURNS @ids TABLE (ID int) AS 

  WITH Filter1 As ( Select id FROM FilterTable1 WHERE Attribute=SomeParameter )
     , Filter2 As ( Select id FROM FilterTable2 WHERE Attribute=SomeParameter )

  INSERT INTO @IDs
  SELECT ID FROM ValueTableA
  WHERE ColA IN (SELECT id FROM Filter1)
  AND   ColB IN (SELECT id FROM Filter2)

  RETURN

-----------------------------------------------------------------------------

FUNCTION GetValuesB(@SomeParameter int) RETURNS @ids TABLE (ID int) AS 

  WITH Filter1 As ( Select id FROM FilterTable1 WHERE Attribute=SomeParameter …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

1
推荐指数
1
解决办法
9233
查看次数