延迟加载是否可能在精致?通用(POCO)和动态API有什么区别?

Rai*_*ika 11 c# dapper

关于使用小巧玲珑,我有两个问题:

  1. 有没有办法加载导航键属性,如实体框架(延迟加载)?

  2. POCO serialization和之间有什么区别dynamic serialization?哪个更好?以及如何使用此序列化?

Mik*_*oud 11

有没有办法加载像实体框架(懒惰加载)的导航键属性?

不,Dapper是一个直接的SQL库,这就是为什么它如此荒谬快速.自动装载没有任何开销.但是,您可以一次加载多个实体.

POCO序列化和动态序列化有什么区别?哪个更好?以及如何使用此序列化?

POCO序列化更有效,因为类型在编译时是众所周知的,动态序列化有点贵,因为它必须在运行时进行评估.除此之外,没有什么区别.

但是,我会在任何地方推荐Dapper高于所有其他库.它简单,快速,非常灵活.相信我,我已经使用了很多框架和库来进行数据访问.

Dapper文档

看看多重映射多个结果


Mar*_*ell 9

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...
Run Code Online (Sandbox Code Playgroud)

要么:

var lookup = conn.Query("select id, name from somelookup").ToDictionary(
      x => (int)x.id, x => (string)x.name);
Run Code Online (Sandbox Code Playgroud)