0

私のプロジェクトでは、より軽量な 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

1 つのデータベース クエリで何百ものレコードを読み込むことができるため、参照の Eager Loading は非常に重要ですが、グリッド内のレコードの作成者を表示することもできます。

どうすればこれを実現できますか?

4

1 に答える 1

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; }
} 

User タイプのプロパティ CreatedBy を持つことはできません - サービス スタック ormlite はこれをサポートしていません。クラスはテーブルのように見える必要があり、テーブルには CreatedBy という名前の int 列があります;) ここで、ormlite- JoinSqlBuilderから結合を作成する方法を読むことができます

于 2013-07-26T19:46:06.357 に答える