.NET ORMLite和Eager Loading

时间:2013-07-26 01:59:15

标签: .net linq-to-sql ormlite-servicestack

我打算在我的项目中使用更轻量级的ORM工具(因为性能和内存使用而使用EF非常沮丧)。   我在考虑使用ORMLite,它似乎是非常整洁的ORM包。

我唯一无法弄清楚如何解决急切加载相关模型。

public class Account
{
     public string Id { get; set; }
     public string CreatedById { get; set; }

     public User CreatedBy { get; set; }
} 

使用上面的类我也希望能够在相关的“CreatedBy”字段上加载一些字段。

SELECT Id, CreatedById, CreatedBy.Name FROM Account

Eager加载引用非常重要,因为一个数据库查询可以加载数百条记录,但我可以显示谁在网格中创建了记录。

我怎样才能实现这一目标?

1 个答案:

答案 0 :(得分:0)

轻量级的orms不包含EF或nHibernate中可用的功能,有快速但你必须编写更多的代码。 ormlite中不存在急切加载。
但是,让我们从头开始:)您的帐户类应如下所示:

public class Account
{
     public string Id { get; set; }
     public string CreatedById { get; set; }

     [References(typeof(User))]
     public int CreatedBy { get; set; }
} 
public class User
{
     public string Id { get; set; }
     public string Name { get; set; }
} 

您不能拥有属性CreatedBy的用户类型 - 服务堆栈ormlite不支持此功能。您的类必须看起来像您的表,并且在表中您有名称为CreatedBy的int列;) 在这里,您可以阅读如何从ormlite- JoinSqlBuilder

进行加入