私は ASP.NET/C#/fluent nHibernate プロジェクトに取り組んでおり、Component
実装したいマッピング機能を最近発見しました。クラス定義とマッピング ファイルは正しいと思いますが、サービスやリポジトリ レイヤーでコンポーネント情報を取得して、DetailsView
またはFormView
.
を使用しObjectDataSource
て情報を取得すると、対応するビューで生成された aspx コードによって、コンポーネント全体が に配置されますTextBox
。
<asp:TextBox ID="extraTextBox" runat="server" Text='<%# Bind("extra") %>' />
マッピング自体を行う方法についてオンラインで多数のリソースを見つけましたが、コンポーネントの部分を適切に表示するための詳細なガイダンスを見つけることができませんでした。任意のガイダンスをいただければ幸いです。
// Stripped down classes
public partial class ProjectExtra
{
private int _test1;
private int _test2;
public ProjectExtra() {}
public virtual int test1 { get { return this._test1; } set { this._test1 = value; } }
public virtual int test2 { get { return this._test2; } set { this._test2 = value; } }
}
public partial class Project
{
private int _pkProjectID;
private ProjectExtra _extra;
public Project() {}
public virtual ProjectExtra extra
{
get
{
return this._extra;
}
set
{
this._extra = value;
}
}
public virtual int pkProjectID
{
get
{
return this._pkProjectID;
}
set
{
this._pkProjectID = value;
}
}
}
// stripped down mapping
public class ProjectMap : ClassMap<Project>
{
public ProjectMap()
{
Table(@"Project");
LazyLoad();
Id(x => x.pkProjectID)
.Column("pkProjectID")
.Access.Property()
.Not.Nullable()
.GeneratedBy.Identity();
Component<ProjectExtra>(x => x.extra, m =>
{
// JobsCreatedActual and JobsCreatedEstimate are two integer columns
// in the Project database table
m.Map(x => x.test1).Column("JobsCreatedActual");
m.Map(x => x.test2).Column("JobsCreatedEstimate");
Not.LazyLoad();
});
}
}