私は最近、非常によく似た質問をしましたが、タイトルがクラスを指している間、私のコンテンツはタプルを参照していました。タプルの代わりにクラスを代入しようとすると、私はTargetParameterCountException: Parameter count mismatch.
の例外を受け取ります。NHibernateをカスタムクラスにマップする方法を教えてください。
How can I get NHibernate to map to a Tuple or Class?
私は、データベースからの結果のリストを取得するには、次の方法があります。
これは一般的にうまくいきます。しかし、私は上記のメソッドを呼び出すメソッドを変更しました。これに、作品
public IList<FooBarResult> FindResults(FooBarTask st)
{
return DataAccess.Find<FooBarResult>(DetachedCriteria.For<FooBarResult>()
.Add(Restrictions.Eq("Task", st))).ToList();
}
(私はFooBarResult
の全体を返すようにしたくないとして、その上にちょうど特定の列)。
public IList<MyCustomClass> FindResults(FooBarTask st)
{
var typeConstructor = typeof(MyCustomClass).GetConstructors()[0];
return DataAccess.Find<MyCustomClass>(DetachedCriteria.For<FooBarResult>()
.Add(Restrictions.Eq("Task", st))
.SetProjection(
Projections.ProjectionList()
.Add(
Projections.Property("FieldOne") //this is a DateTime
)
.Add(
Projections.Property("FieldTwo") //this is a Guid
)
.SetResultTransformer(Transformers.AliasToBeanConstructor(typeConstructor))
)
);
}
これはクラスです。前述したように
public class MyCustomClass
{
public MyCustomClass()
{
//placeholder
}
public MyCustomClass(DateTime FieldOne, Guid FieldTwo)
{
this.FieldOne = FieldOne;
this.FieldTwo = FieldTwo;
}
public DateTime FieldOne { get; set; }
public Guid FieldTwo { get; set; }
}
return crit.GetExecutableCriteria(InstanceSession).List<T>();
コードを実行しているとき、私はTargetParameterCountException: Parameter count mismatch.
例外を取得。
MyCustomClass
のリストを返す方法はありますか?
はあなたの助けがあったが、そんなにありがとうございました非常に貴重な:) –