相关疑难解决方法(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-dot-net吗?

我正在尝试使用dapper-dot-net来加速我的asp.net mvc应用程序的某些区域.我也首先使用EF5代码.

由于dapper-dot-net只是IDbConnection的一些扩展,我可以使用

DbContext.Database.Connection 
Run Code Online (Sandbox Code Playgroud)

用dapper-dot-net?我测试它是否有效.但是,我不确定这是使用它的正确方法吗?特别是,当我使用这种方式时,Entity Framework是否会产生一些可能会影响性能的影响?

performance entity-framework dapper

14
推荐指数
2
解决办法
7944
查看次数

使用Dapper或通过Linq填充一对多关系

实体 - AllSalesTerritory包含List<MySalesPerson>代表一对多关系.我有Sql查询来获取使用列映射两个实体的数据TerritoryId.我使用以下代码来填充实体Dapper micro ORM:

 List<AllSalesTerritory> allSalesTerrotories = _connection.Query<AllSalesTerritory, MySalesPerson, AllSalesTerritory>
                (query, (pd, pp) =>
                {
                    pd.SalesPersons.Add(pp);
                    return pd;
                }, splitOn: "BusinessEntityId")
                .ToList();
Run Code Online (Sandbox Code Playgroud)

BusinessEntityId 是SalesPerson实体在执行Sql语句时的开始列

我面临的挑战是,这种代码有助于轻松填充一对一关系,这里我只获得一个值List<MySalesPerson>,而不是在集合中聚合这些值,基本上与SQL连接查询的结果相同.我可以使用简单的foreach循环并聚合值来轻松解决问题MySalesPerson.但是,我想弄明白:

  1. Dapper可以自动帮助我实现它,尝试了一些扩展,但它们没有按预期工作
  2. Linq代码可以为我做,因为这SelectMany与具有一对多关系的实体有些相反

c# linq one-to-many dapper

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

使用 Dapper 映射多个复杂类型属性

我有以下 Dapper 查询:

var orderModels = db.Query<OrderModel>(@"
SELECT
    o.[Id],
    o.[CustomerId],

    o.[DeliveryAddress_FirstName],
    o.[DeliveryAddress_LastName],
    o.[DeliveryAddress_Line1],
    o.[DeliveryAddress_Line2],
    o.[DeliveryAddress_City],
    o.[DeliveryAddress_State],
    o.[DeliveryAddress_PostCode],
    o.[DeliveryAddress_Country],

    o.[BillingAddress_FirstName],
    o.[BillingAddress_LastName],
    o.[BillingAddress_Line1],
    o.[BillingAddress_Line2],
    o.[BillingAddress_City],
    o.[BillingAddress_State],
    o.[BillingAddress_PostCode],
    o.[BillingAddress_Country]
FROM
    [Order] o
");
Run Code Online (Sandbox Code Playgroud)

我想将其加载到以下结构的数据模型中:

public class OrderModel
{
    public int Id { get; set; }
    public int CustomerId { get; set; }

    public AddressModel DeliveryAddress { get; set; }
    public AddressModel BillingAddress { get; set; }
}

public class AddressModel
{
    public string FirstName { get; set; }
    public string LastName { get; …
Run Code Online (Sandbox Code Playgroud)

.net c# orm dapper

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

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
查看次数

如何使用Slapper.AutoMapper映射IList <int>

我试图用Slapper.AutoMapper一起Dapper完成这样的事情:我怎样写一对多查询中Dapper.Net?.

我的POCO是这样的:

public class MyEntity
{
    public string Name { get; set; }
    public string Description { get; set; }
    public int Level { get; set; }
    public IList<int> Types { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我返回的数据库行是这样的:

在此输入图像描述

因此,一个实体可以有多种类型.这就是我绘制内容的方式:

dynamic test = conn.Query<dynamic>(sql); Slapper.AutoMapper.Configuration.AddIdentifier(typeof(MyEntity), "Name");
var testContact = Slapper.AutoMapper.MapDynamic<MyEntity>(test);
Run Code Online (Sandbox Code Playgroud)

但是在我的所有结果对象中,Types属性为null.如何将所有Type值映射到IList类型?

c# dapper

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