【发布时间】:2019-08-13 22:32:19
【问题描述】:
这个问题现在很老了,Dapper 数据视图绑定已修复,如下所示的答案:)
您好, Dapper ORM 是非常快速且轻量级的数据库映射器。所以人们用它来代替缓慢的实体框架或旧的普通 ADO.NET。
我问了这个问题并回答了它,许多开发人员真的很关心从 Dapper.NET ORM 返回一个可以绑定到网格的实时列表。而不是当前只返回 List<DapperRow> 的存储库,这对于绑定东西是无用的。
当前 Dapper.NET 存储库的问题(谈到动态事物)
-
List<dynamic> dynamicList = IConn.Query(queryString);返回DapperRow -
List<DapperRow>对于那些了解动态事物特别关心填充 GridViews 和 TreeLists 的人来说毫无用处 - 库本身是手工或硬编码的。包含 OPCode(MSIL 注入)列表,因此许多开发人员在需要增强或开发自定义动态事物时会感到痛苦。
在这件事上花了很多时间。并得到其他贡献者的帮助。我创建了这个类文件,帮助开发人员以高性能动态绑定。 SqlMapper.Dynamics.cs如下图。
实际上动态的效率和速度比强类型列表具有非常高的性能。
List<dynamic> Dapper ORM 与 SqlMapper.Dynamics.cs 命中 55 - 65 毫秒
List<StronglyTypedClass> 命中 72 - 73 毫秒
SqlMapper.Dynamics.cs Link Here
用法:
-
您必须将此单元/类与当前 Dapper 存储库源代码Github Link一起使用
-
使用 SqlMapper.Dynamics.cs 编译您的存储库,将文件添加到 Dapper 文件夹。
-
那就用新的扩展方法
QueryDynamic(string yourQuery)IDbConnection db = new SqlConnection("server=(local); database = test"); string query = "SELECT * FROM Table"; dynamic BindingList = db.QueryDynamic(query); gridControl1.DataSource = BindingList; // For WinForms Grids gridControl1.ItemsSource = BindingList; // For WPF Grids
请不要修改这个问题。 因为我只是帮助使用 Dapper.NET ORM 库与动态绑定事物(GridViews、TreeLists 等)的开发人员。
【问题讨论】:
-
不幸的是,这实际上被认为是本网站的题外话,因为它旨在以“问答”格式使用。我意识到您希望将其提供给未来搜索此内容的人。更合适的可能是codereview.stackexchange.com,或者,也许您可以找到另一种方式来格式化它,使其适合本网站上使用的问答格式,也许通过将其作为一个问题提出,然后创建一个答案(并让其他人添加他们自己的答案)。
标签: c# .net dynamic reflection dapper