2011-01-25 3 views
0

NHibernateでQBEを使用する際に問題があります。私はPersonクラスとEmployeeの間に1対1の関係を持っています。一例として、NHibernate - QBE

public class Person 
{ 
    public virtual Employee Employee { get; set; } 
    public virtual int Age { get; set; } 
    public virtual string Forename { get; set; } 
    public virtual string Surname { get; set; } 
    public virtual int PersonID { get; set; } 
} 

public class Employee 
{ 
    public virtual int PersonID { get; set; } 
    public virtual string PayRollNo { get; set; } 
    public virtual int Holidays { get; set; } 
    public virtual Person Person { get; set; } 
} 

、私はEmployee.Forename = "ジョン" とEmployee.Person.PayRollNo = "231A" すべての従業員を取得したいです。これを行うためにQuery By Exampleを使用できるかどうか疑問に思っていましたか?

答えて

2

私は決定的な「いいえ」を見つけることができませんでしたが、私はこの仕事を得ることができませんでした。私はQBEが有望だが、残念ながら以下の制限のために有用ではないことを発見した。

  • 関連オブジェクトを照会できない。
  • パブリックパラメータレスコンストラクタが必要です。
  • 初期化されたプロパティは、ExcludeProeprtyを使用して明示的に除外されない限り、クエリに含まれます。たとえば、boolプロパティは、where句ではDateTime.MinValueとしてDateTimeに制限されています。これにより、クラスの変更によって悪影響が生じる可能性があるため、クエリが非常に脆弱になります。