我有两个关于与小巧玲珑合作的问题:
有没有办法加载导航键属性,如实体框架(延迟加载)?
POCO serialization
和dynamic serialization
什么区别?哪个更好?以及如何使用此序列化?
有没有办法加载像实体框架(懒惰加载)的导航键属性?
不,Dapper是一个直接的SQL库,这就是为什么它如此快得令人无情。自动装载没有任何开销。但是,您可以一次加载多个实体。
POCO序列化和动态序列化有什么区别?哪个更好?以及如何使用此序列化?
POCO序列化更有效,因为类型在编译时是众所周知的,动态序列化有点贵,因为它必须在运行时进行评估。除此之外,没有什么区别。
但是,我会在任何地方推荐Dapper高于所有其他库。它简单,快速,非常灵活。相信我,我已经使用了很多框架和库来进行数据访问。
看看多重映射和多个结果
1:不;没有,除非你自己完全滚动它。它是故意简约和确定性的
2:如果要将数据公开给应用程序的其他部分,例如作为视图模型的数据,实现POCO非常方便。例如, Query<Customer>
可以填充您可以在其他地方编码的众所周知的Customer
对象。 dynamic
非常方便 ,但不是很容易探索 - 并且不适用于数据绑定或智能感知。然而,对于保持非常本地化或者示例的DAL方法来说,这非常方便
var row = conn.Query("select qty, cost from parts where id = @id",
new { id }).Single();
int qty = row.qty;
decimal cost = row.cost;
// and off we go...
要么:
var lookup = conn.Query("select id, name from somelookup").ToDictionary(
x => (int)x.id, x => (string)x.name);