我是C#的新手,这可能最终成为一个愚蠢的问题,但无论如何我还是要问.
是否有一个使用C#的机制将执行的SQL语句的结果反序列化为ac#object?
我有一个C#程序从一个sql服务器读取一个表来存储一个对象中的行 - 我正在手动将每个列值分配给一个对象成员,所以我想知道是否有一种方法将行自动序列化为一个对象.或者甚至更好,在同一类型的对象集合中的整个表.
我的环境是C#,VS2010,.NET4,SQLServer2008.假设我知道我需要的列,它不是select*查询.
一个简洁的例子的链接也将受到赞赏.
谢谢.
如果按表名命名的列,则可以使用LINQ-to-SQL而不使用任何映射代码-只需使用ExecuteQuery:
using(var dc = new DataContext(connectionString)) {
var objects = dc.ExecuteQuery<YourType>(sql); // now iterate object
}
Run Code Online (Sandbox Code Playgroud)
此外,可以使用string.Format规则自动设置sql参数:
class Person {
public int Id {get;set;}
public string Name {get;set;}
public string Address {get;set;}
}
using(var dc = new DataContext(connectionString)) {
List<Person> people = dc.ExecuteQuery(@"
SELECT Id, Name Address
FROM [People]
WHERE [Name] = {0}", name).ToList(); // some LINQ too
}
Run Code Online (Sandbox Code Playgroud)
当然,您也可以使用VS工具来创建类型化的数据上下文,从而实现以下目的:
using(var dc = new SpecificDataContext(connectionString)) {
List<Person> people =
(from person in dc.People
where person.Name == name
select person).ToList();
}
Run Code Online (Sandbox Code Playgroud)