Схема моей таблицы (отрывок)
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
на уровне класса (как показано в верхнем коде), но мои правила всегда нулевые. Предположим, что часть проблемы заключается в том, что это свойство внутреннего класса должно быть создано первым, чтобы быть назначенным, потому что все примеры BLToolkit используют внутренние объекты, не допускающие значение NULL. Но в моем случае я не хочу создавать его экземпляр, если он должен быть null
(в большинстве случаев это будет null
).
Как это нужно сделать тогда?