使用Dapper进行映射

时间:2019-07-04 07:26:31

标签: c# asp.net dapper

我在暑假期间工作了一个月,我必须使用dapper映射模型。我看了几个视频,但我真的不明白它是如何工作的。我只想使用asp.net Web API映射整个模型。

下面是我的两个型号,我已经安装了Dapper。

我尝试观看一些视频并用谷歌搜索我的问题,但没有一个人以我理解的方式解释它。

设施等级:

from django.db import migrations

def combine_names(apps, schema_editor):
    # We can't import the Person model directly as it may be a newer
    # version than this migration expects. We use the historical version.
    Person = apps.get_model('yourappname', 'Person')
    for person in Person.objects.all():
        person.name = '%s %s' % (person.first_name, person.last_name)
        person.save()

class Migration(migrations.Migration):

    dependencies = [
        ('yourappname', '0001_initial'),
    ]

    operations = [
        migrations.RunPython(combine_names),
    ]

测量类别:

namespace DataImportWebService.Models
{
    public class Facility
    {
        public string Name { get; set; }

        public string Date { get; set; }

        public string FeedbackType { get; set; }

        public int Count { get; set; }
    }
}

我希望得到一个解释或一些代码。谢谢!

2 个答案:

答案 0 :(得分:1)

听起来您只是想弄清楚如何使用dapper。 https://dapper-tutorial.net/dapper上有很多文档。对于您的2个对象,如果您只是试图将数据库中的数据映射到这些对象中,那将非常简单。

我经常创建一个基本的存储库类,其中包含我可能要运行的所有不同版本。最基本的可能是:

protected IEnumerable<T> ExecuteQuery<T>(string query, object parameters = null, CommandType? commandType = null)
{
    using (var conn = Connection)
    {
        return conn.Query<T>(query, parameters, commandType: commandType, commandTimeout: 0);
    }
}

然后可以在其他存储库中使用它,如下所示:

ExecuteQuery<YourObjectToMapTo>(YourSQLQuery, YourParameters);

这将返回对象的IEnumerable,即使它仅得到1。要仅返回1,只需在末尾粘贴First()或FirstOrDefault()。

答案 1 :(得分:0)

您需要了解的是,Dapper只是ADODB.NET之上的薄包装。它与实体框架完全不同。 Dapper现在不再是您的数据库结构,也不会为您执行SQL。您创建数据库并编写所有SQL。 Dapper通过向连接中添加许多扩展方法来帮助您。扩展方法将DataReader中所有乏味的ADODB.NET东西拿走并隐藏起来,这使您可以向数据库中发射select并在数据库列的位置返回一个不错的列表已映射到您的实体。 如果您的实体属性和数据库列的名称相同,那么实际上几乎没有。我敦促您仔细阅读@ sr28的答案中的教程。