因为Orcale中表的字段都是大写,但是我们自己在使用的时候,大多使用驼峰命名等,所以就需要进行映射,在net环境下,使用Dapper进行自动映射就很重要
代码如下
想要映射的类
using System.Runtime.Serialization;
namespace Serialization
{
[DataContract]
public class Person
{
[DataMember(Name ="ID")]
public int Id { get; set; }
[DataMember(Name = "NAME")]
public string Name { get; set; }
[DataMember(Name = "AGE")]
public int Age { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Data;
using System.Runtime.Serialization;
using Dapper;
using Oracle.ManagedDataAccess.Client;
using Serialization;
class Program
{
static void Main()
{
List<Person> people = FetchDataFromOracle();
// 输出查询结果
Console.WriteLine("Fetched People:");
foreach (var person in people)
{
Console.WriteLine($"Id: {person.Id}, Name: {person.Name}, Age: {person.Age}");
}
}
static List<Person> FetchDataFromOracle()
{
string connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servername)));User Id=username;Password=password;"; // 替换为你的 Oracle 连接字符串
using (IDbConnection dbConnection = new OracleConnection(connectionString))
{
dbConnection.Open();
// 使用默认映射,Dapper 会自动将数据库列映射到实体类属性
string query = "SELECT ID, NAME, AGE FROM person";
return dbConnection.Query<Person>(query).ToList();
}
}
}
其中主要是 dbConnection.Query<Person>(query).ToList();来进行转换映射
在数据库中查询出来如下
程序运行之后断点
可以看出,在此处,就已经映射成了大驼峰命名了
去除断点之后
这样就可以看出,映射完成
如果有误,请留言交流