我刚刚使用 Fluent nHibernate 和自动映射功能对一个小型数据库进行了建模。现在我想知道我如何使用验证。在过去,我用属性装饰了我的类,但这种按惯例自动映射的目的是保持事物清洁。
我确实有几个看起来像这样的覆盖文件:
public class EventMappingOverride : IAutoMappingOverride<Event>
{
public void Override(AutoMapping<Event> mapping)
{
mapping.Map(x => x.EventType, "TypeID").CustomType(typeof(EventType));
mapping.Map(x => x.EventStatus, "StatusID").CustomType(typeof(EventStatus));
mapping.HasMany(x => x.EventDates).KeyColumn("EventID");
}
}
这是我要放置验证规则的地方吗?如果是这样,那看起来像什么,是否真的有使用自动映射的意义(如果我的覆盖文件无论如何都要详细说明)?
谢谢。
进一步澄清:
到目前为止,我的实体看起来像这样:
namespace Business.Data
{
public class Event
{
public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual EventStatus EventStatus { get; set; }
public virtual EventType EventType { get; set; }
public virtual IList<EventDate> EventDates { get; set; }
}
}
我想让它们看起来像那样。只是简单的对象,因此将来我们可以切换或升级 ORM 并仍然拥有这些漂亮干净的对象。
但是,当谈到使用nHibernate Validator(NHContrib 的一部分)时,我不确定如何在不乱扔属性的情况下合并它。我想这更像是一个问题架构。我也可以使用不同的验证框架,但我希望它与 nHibernate 绑定,这样它就不会插入/更新无效记录。任何意见表示赞赏!