标签: dapper-extensions

如何使用Dapper.net Extensions忽略类属性?

我正在使用Dapper.net Extensions,并且想要忽略某些属性而无需编写完整的自定义映射器.正如您在下面的ClassMapper中看到的那样,当我真正想做的就是忽略一个属性时,会有很多冗余代码.实现这一目标的最佳方法是什么?

我喜欢这里提供的答案/sf/answers/1025454951/但我找不到定义'Write'的命名空间.

public class Photo : CRUD, EntityElement
{
    public Int32 PhotoId { get; set; }
    public Guid ObjectKey { get; set; }
    public Int16 Width { get; set; }
    public Int16 Height { get; set; }
    public EntityObjectStatus ObjectStatus { get; set; }
    public PhotoObjectType PhotoType { get; set; }
    public PhotoFormat2 ImageFormat { get; set; }
    public Int32 CategoryId { get; set; }

    public int SomePropertyIDontCareAbout { get; set; }
}


public class CustomMapper : …
Run Code Online (Sandbox Code Playgroud)

c# dapper dapper-extensions

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

不要使用 dapper 扩展更新 Update 方法上的某个属性

我知道我可以使用纯粹的 dapper 来构建我的更新字符串,其中只有我想要更新的属性(白名单)。

我想要的是保持 dapper 扩展的 ORM 风格:

con.Update<Person>(person);
Run Code Online (Sandbox Code Playgroud)

我希望人的某些属性不被更新(黑名单)

如何排除运行 .Update 扩展方法更新的属性?

你可能知道一个更好的 .Update 扩展名的 dapper 风格吗?(那我就不用

写下来 ;-)

dapper dapper-extensions

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

Dapper Extensions更改架构

我正在使用Dapper Extensions在数据库上执行一些简单的CRUD操作.我的问题是我使用的表以不同的模式保存到dbo.有没有办法在dapper扩展级别选择架构?

要么

是否应该通过用于连接数据库的用户处理?

dapper dapper-extensions

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

使用 Dapper Extensions,插入 IEnumerable&lt;T&gt; 时可以检索 ID

如果一次插入一个对象,则可以从该对象中获取 Id:

foreach (var object in objectList)
{
    conn.Insert(object);
    int id = object.Id; // Returns Id as expected
}
Run Code Online (Sandbox Code Playgroud)

但是,如果插入 IEnumerable 对象,则无法正确获取 Id:

conn.Insert(objectList);
foreach (var object in objectList)
{
    int id = object.Id; // Returning 0
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以插入对象列表并仍然获取 Id,而无需一次插入 1 个?

.net c# dapper dapper-extensions

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

dapper-extensions GetList()with(nolock)

有人知道with (nolock)在使用时是否可以告诉dapper追加connection.GetList<TView>()

我使用它作为我的CQRS模型中的R并且它运行良好但我现在担心我们正在做更多的重读,它将开始锁定表.如果可能的话,我宁愿不在混合中添加交易.

sql-server nolock dapper dapper-extensions

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

如何在 Dapper-Extensions 中运行时更改架构?

我正在使用 Dapper Extensions,但我的数据库中有多个架构名称。

我在下面的链接中找到了答案,但它假设我只有一个架构名称,而这不是我的情况。 Dapper 扩展更改架构

在运行时更改架构名称的正确方法是什么?

dapper dapper-extensions

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

如何使用 LINQ 中的 Dynamic 处理 Dapper 返回键值对

我是 Dapper 的新手。让我解释一下我想要实现的目标。我有一个简单的查询,它从数据库返回列,我不想为其创建实体(属性)类来填充数据。我想为此使用动态类型。下面是我的代码:

public dynamic GetABC(int year)
    {

        using (var db = new MySql.Data.MySqlClient.MySqlConnection(ClsConnectionString.connectionString))
        {

            string query = string.Format(@"SELECT * FROM ranking where YEAR(eventdate)='{0}') ORDER BY eventdate DESC, eventid ASC",year);
            //return db.Query<RankingEntity>(query, commandType: System.Data.CommandType.Text).AsList();
            var a = (IEnumerable<dynamic>)db.Query(query, null, null, true, null, CommandType.Text).ToList();
            return a;
       }
    }
Run Code Online (Sandbox Code Playgroud)

它返回我键值对。像下面这样: 衣冠楚楚的行

有什么办法吗,我只是编写一种常用方法来获取 List 作为“Property”=“Value”,就像我们使用任何实体类时通常得到的那样。

我不确定它是否可以实现,但我希望了解是否可能并希望在我们的应用程序中实现。

我可以通过我不想要的 dapperrows 实现循环来实现这一点。因为如果有 10000 行,循环将迭代 10000 次。

提前致谢。

c# linq dapper dapper-extensions

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

c# Dapper, SplitOn: 多个相同参数问题多重映射一对多

我有一个问题是 Dapper Query 在父对象上分割,而不是在子对象上分割。结果为每个子项返回一个父行,从而给出许多重复的父项,其中只有 1 个子项。

我正在探索的一个可能的问题是,table1 和 table2 的主键是否会在 split 函数中造成一些混乱,因为它们具有相同的名称 (.Id)。

问题是,如何拆分父子行,以便可以使用 SplitOn: 中的相同参数将许多子项绑定到一个父模型?

=================================================== =======================

结论

在评论中我们得出的结论是字典需要在函数之外,不需要多个SplitOn:,一个就足够了。

最后,字典确实提供了表 1 的不同集合,每个表都代表孩子。

请参阅评论了解更多详情。

=================================================== =======================

var sql = $@"
SELECT * FROM Table1 t 
INNER JOIN Table2  c ON c.Table1_Id = t.Id;";

                var result = connection.Query<Table1, Table2, Table1>(
                   sql,
                   (table1, table2) =>
                   {
                       Table1 table1Entry;
                       Dictionary<int?, Table1> table1Dictionary = new Dictionary<int?, Table1>();

                       if (!table1Dictionary.TryGetValue(table1.Id, out tableEntry))
                       {
                           table1Entry = table1;
                           table1Entry.table2s = new List<Table2>();
                           tableDictionary.Add(table1Entry.Id, table1Entry);
                       }

                       tableEntry.table2s.Add(table2);
                       return …
Run Code Online (Sandbox Code Playgroud)

c# one-to-many multi-mapping dapper-extensions

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

如何在 Dapper 中使用 Char 和 VarBinary?

我必须调用参数为char和 的存储过程VarBinary(MAX)。我需要使用 Dapper 从 C# 代码调用此存储过程。但我找不到 dapper 支持的任何参数。

SP:

ALTER PROCEDURE [dbo].[uspTest]      
 , @Param1   CHAR(1)        
 , @Param2   VARBINARY(MAX)=null
Run Code Online (Sandbox Code Playgroud)

C#:

DynamicParameters parameter = new DynamicParameters();
parameter.Add("@Param1", email.SenderType, DbType.char, ParameterDirection.Input);
parameter.Add("@Param2", email.AttachedFileStream, DbType.varbinary, ParameterDirection.Input);
Run Code Online (Sandbox Code Playgroud)

编译错误:

DBType 不包含 char 和 varbinary 的定义

c# dapper dapper-extensions

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

你能说出为什么DapperExtension的Update方法无法执行吗?

我正在使用SQLite,Dapper和DapperExtensions,这些都是最新的NuGet.

这是我的表的架构......

CREATE TABLE `LibraryInfo` (
    `Id`    INTEGER NOT NULL,
    `Name`  TEXT NOT NULL CHECK(length ( Name ) > 0),
    `Description`   TEXT,
    `Version`   TEXT NOT NULL CHECK(length ( Version ) > 0),
    PRIMARY KEY(Id)
);
Run Code Online (Sandbox Code Playgroud)

在其中我有一行包含以下数据

Id ="0"
Name ="Test Library"
Description ="这是测试库"
Version ="1.2.3.4"

这是我桌上的POCO ......

public class LibraryInfo
{
    public int    Id          { get; set; }
    public string Name        { get; set; }
    public string Description { get; set; }
    public string Version     { get; set; }
} …
Run Code Online (Sandbox Code Playgroud)

c# sql sqlite dapper dapper-extensions

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