我在数据访问方面有点落后,需要朝着正确的方向前进。我目前只有一个SQL Server数据库表,其中大约有35列。我正在构建一个WCF web服务来提供对它的访问,并试图找出将基于C#的web服务链接到数据库的最快方法。
我一直在研究实体框架,但它似乎很重,到目前为止,我在上面发现的一切似乎都假设你已经了解了它,所以如果它走错了路,我不想太深入。我并不完全赞同在应用程序中生成SQL的想法。我已经有了一个DataContract类,其中包含表中每列的属性,我只是在寻找一种自动将列映射到属性,并将属性映射回列/存储过程参数的方法。我已经编写了一些代码,使用反射将来自不同源的数据映射到此DataContract(在属性名称上匹配一个附加映射字典作为备份),所以在这里做同样的工作并不多,但我想看看还有什么可用的。我想避免的是写出每个PropertyName = ColumnName.Value
。对于这样一个简单的案例,VS2010.NET4.0中是否内置了一些轻量级的东西?这里提到的通过EF直接调用存储过程是一个好的选择吗?它看起来有点过时了。
我喜欢Dapper,一个"微型ORM"。SO使用过它。我把它很好地用作"将列映射到属性的自动方法",它似乎也可以"将属性映射回列/存储过程参数",但我还没有用它。这太棒了——我在用Nuget拿到球后大约5分钟就完成了。我是EF的新手,如果没有导游,我不会推荐它。
IEnumerable<TModel> result;
using (MySqlConnection conn = new MySqlConnection(_mysqlConnString))
{
// "Query" is a Dapper extension method that stuffs the datareader into objects based on the column names
result = conn.Query<TModel>("Select * from YourTable");
}
// do stuff with result
这链接到一个完整的例子,而不仅仅是我从当前项目中提取的部分。http://www.tritac.com/bp-24-dapper-net-by-example
其他Dapper信息:c-sharpcorner.com/UploadFile/4d9083/…和liangwu.wordpress.com/2012/08/16/Dapper-net-samples谈论它。
(从评论中删除,因为这更多的是一个答案,而不是一个评论——我正在努力在合适的地方完成合适的任务)。