私のテーブルスキーマ(抜粋)
create table dbo.MyEntity
(
MyEntityID int identity not null
primary key,
Name nvarchar(50) not null
unique,
Description nvarchar(500) null,
-- these two are optional fields
MaxCount int null,
MinSpace int null
)
エンティティクラス
[MapField("MaxCount", "Rule.MaxCount")]
[MapField("MinSpace", "Rule.MinSpace")]
public class MyEntity
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
// when values are not null this property should have an instance
public MyEntityRule Rule { get; set; }
public bool HasRule
{
get { return this.Rule != null; }
}
}
public class MyEntityRule
{
public int MaxCount { get; set; }
public int MinSpace { get; set; }
}
問題?
私のクラスへのフィールドのマッピングが問題です。データテーブル(上部)から取得したフラットな結果セットから内部クラスのプロパティを直接マップしたいと思います。
MapFieldAttribute
(上のコードに見られるように)クラスレベルで設定を設定しましたが、ルールは常にnullです。問題の一部は、この内部クラスプロパティを最初にインスタンス化して割り当てる必要があることです。これは、すべてのBLToolkitの例でnull許容でない内部オブジェクトが使用されているためです。しかし、私の場合は、必要に応じてインスタンスを作成したくありませんnull
(ほとんどの場合は作成されますnull
)。
では、これはどのように行う必要がありますか?