C# 将 Dapper POCO 和 Dapper.Fluent EntityMap 作为参数传递

标签 c# mysql dapper

我目前正在尝试通过 dapper 设置 MySQL 数据库。

我已经为 dapper 声明了 POCO:

public class DevicesOnTesterDbTable 
{
    public string UUID { get; set; }
    public string DeviceType { get; set; }
    public string DeviceAddedAt { get; set; }
    public uint Address { get; set; }
}

我还有那个表的 Dapper.Fluent EntityMap:

public class DevicesOnTesterDbTableMap : EntityMap<DevicesOnTesterDbTable>
{
    public DevicesOnTesterDbTableMap()
    {
        Map(p => p.UUID).ToColumn("devices_on_tester_uuid");
        Map(p => p.DeviceType).ToColumn("devices_on_tester_type");
        Map(p => p.DeviceAddedAt).ToColumn("devices_on_tester_add_at");
        Map(p => p.Address).ToColumn("devices_on_tester_address");
    }
}

我的数据库有大约十个表,所以我有十对 POCO 和 EntityMap 类。所以在阅读的情况下,我必须为每个表执行这样的操作:

public static List<DevicesOnTesterDbTable> ReadDevices(string server)
{
    FluentMapper.Initialize(config =>
    {
        config.AddMap(new DevicesOnTesterDbTableMap());
    });

    try
    {
        using (var mySqlConnection = OpenConnection(server))
        {
            mySqlConnection.Open();
            return mySqlConnection.Query<DevicesOnTesterDbTable>("Select * from power_source_calibration").ToList();
         }
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
        throw;
    }           
}

现在有没有办法将这个对传递给其他一些执行常见操作(如读\写\更新等)的方法?或者也许有更好的方法?

最佳答案

有更好的方法;实际上你做错了。

您不需要在每个方法中调用 FluentMapper.Initialize,例如 ReadDevices。理想情况下,您的所有映射(针对所有实体)应该只在您的应用程序启动时发生一次。

以下来自here :

Initialize your mapping at the start of your application.

FluentMapper.Initialize(config =>
{
    config.AddMap(new InvoiceMap());
});

另请参阅 this显示如何在应用程序启动时执行此操作的问题。引用 Register() 方法,它是 static 并且调用者在某个地方的应用程序启动时调用它一次。

关于C# 将 Dapper POCO 和 Dapper.Fluent EntityMap 作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47247891/

相关文章:

c# - WPF 模板表单

java - SHA 256 从 Java 到 C#

php - 从毒物标签系统的 3 个表中获取数据

c# - 扩展基类型并自动更新实体的审计信息

c# - 如何确定字符串的前 X 个字符中是否包含特定子字符串

python - 值被读入作为 mysql 查询中的列标题

mysql - 简单的 mySQL 子查询

c# - Moq.Dapper QueryAsync 不适用于模拟事务对象

servicestack - 如何在 ServiceStack 中使用 Dapper

c# - 使用 .NET 核心中的 dapper 批量插入 PostgreSQL