Fluent NHibernate - 应用自定义类型的约定

发布于 2024-11-30 11:10:35 字数 664 浏览 1 评论 0原文

我正在使用 Fluent NHibernate(自动映射)将我的域对象映射到数据库表。我创建了自己的“Date”类,并使用“DateTranslator”(NHibernate 的“IUserType”的实现)进行映射。

public class MyDomainObject : DomainObject
{
    public Date Date { get; set; }
}

public class MyDomainObjectMappingOverride : IAutoMappingOverride<MyDomainObject>
{
    public void Override(AutoMapping<MyDomainObject> mapping)
    {
        mapping.Map(x => x.Date).CustomType(typeof(DateTranslator));
    }
}

正如您所看到的 - 我已经为此域对象创建了映射覆盖,以便我可以指定用于映射“日期”属性的自定义类型。

现在 - 这意味着我必须为包含“日期”类型属性的所有域对象创建映射覆盖。

我想在这里使用一个约定,以便“DateTranslator”将用于映射“Date”类型的所有属性,但我一直无法弄清楚。

任何对此的帮助将不胜感激。

I'm using Fluent NHibernate (Auto Mapping) to map my domain objects to database tables. I've created my own 'Date' class which I map using 'DateTranslator' - an implementation of NHibernate's 'IUserType'.

public class MyDomainObject : DomainObject
{
    public Date Date { get; set; }
}

public class MyDomainObjectMappingOverride : IAutoMappingOverride<MyDomainObject>
{
    public void Override(AutoMapping<MyDomainObject> mapping)
    {
        mapping.Map(x => x.Date).CustomType(typeof(DateTranslator));
    }
}

As you can see - I've created a mapping override for this domain object so that I can specify the custom type that should be used to map the 'Date' property.

Now - this means that I'll have to create a mapping override for all domain objects that contain a property of type 'Date'.

I'd like to use a convention here so that 'DateTranslator' will be used to map all properties of type 'Date' but I've been unable to figure it out.

Any help with this would be greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

薯片软お妹 2024-12-07 11:10:35
public class MyUsertypeConvention : IPropertyConvention
{
    public void Apply(IPropertyInstance instance)
    {
        if (instance.Type.Name == "Date")
        //or
        //if (instance.Type.GetUnderlyingSystemType() == typeof(Date))
            instance.CustomType<DateTranslator>();
    }
}

和配置例如

FluentMappings.Conventions.Add(new MyUsertypeConvention())
public class MyUsertypeConvention : IPropertyConvention
{
    public void Apply(IPropertyInstance instance)
    {
        if (instance.Type.Name == "Date")
        //or
        //if (instance.Type.GetUnderlyingSystemType() == typeof(Date))
            instance.CustomType<DateTranslator>();
    }
}

and config for example

FluentMappings.Conventions.Add(new MyUsertypeConvention())
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文