我是Dapper Micro ORM的新手.到目前为止,我能够将它用于简单的ORM相关内容,但我无法使用类属性映射数据库列名.例如:
我有如下数据库表:
Table Name: Person
person_id int
first_name varchar(50)
last_name varchar(50)
Run Code Online (Sandbox Code Playgroud)
我有一个名为Person的课程
public class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
请注意,表中的列名与我尝试映射查询结果的数据的类的属性名不同.
var sql = @"select top 1 PersonId,FirstName,LastName from Person";
using (var conn = ConnectionFactory.GetConnection())
{
var person = conn.Query<Person>(sql).ToList();
return person;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用,因为列名与对象的(Person)属性不匹配.在这种情况下,我可以在Dapper中手动映射(例如person_id => PersonId)具有对象属性的列名吗?
任何线索或帮助将受到高度赞赏.
似乎有一个DapperExtensions项目,但Dapper项目中还有一个SqlMapperExtensions类.有重叠吗?一个比另一个更受欢迎吗?我在Dapper.Contrib上找不到任何文档.
这是我第一次使用Dapper.Contrib(Nuget的最新版本),这是一个奇怪的情况:
using (SqlConnection cn = new SqlConnection(connectionString))
{
cn.Open();
var product = cn.Get<Product>(1);
}
Run Code Online (Sandbox Code Playgroud)
在SqlMapperExtensions上,它引发了错误Invalid object name 'Products':
public static T Get<T>(this IDbConnection connection,
dynamic id,
IDbTransaction transaction = null,
int? commandTimeout = null) where T : class
{
var type = typeof(T);
string sql;
if (!GetQueries.TryGetValue(type.TypeHandle, out sql))
}
Run Code Online (Sandbox Code Playgroud)
数据库收到select * from Products where Id = @id错误的命令.
s到产品?我已尝试过其他表并获得相同的结果.
我试验了Dapper和Dapper.Contrib.我有以下课程:
public class Customer
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
public bool Active { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
它被映射到多个表" Customers".是否有一种简单的方法可以让Dapper为所有表使用单个表名?