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

C# C将Dapper POCO和Dapper.Fluent EntityMap作为参数传递,c#,mysql,dapper,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安装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。在每个方法中初始化,如ReadDevices。理想情况下,所有实体的所有映射只应在应用程序启动时发生一次

FluentMapper.Initialize(config =>
{
    config.AddMap(new InvoiceMap());
});
以下资料来自:

在应用程序开始时初始化映射

FluentMapper.Initialize(config =>
{
    config.AddMap(new InvoiceMap());
});
另外,请参阅显示如何在应用程序启动时执行此操作的问题。引用静态的Register方法,并在应用程序启动时调用它一次