我在暑假期间工作了一个月,我必须使用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; }
}
}
我希望得到一个解释或一些代码。谢谢!
答案 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的答案中的教程。