0

我看到了如何使用映射文件为我想要的任何 nhibernate 映射类指定自定义 IUserType。

但是,我不想每次都输入它。有没有办法覆盖这里看到的标准映射表?在此处输入图像描述

我有 Jørn Schou-Rode 的 IUserType 实现,用于在 MariaDB 的 Binary(16) 中存储一个 guid。我想要的只是输入一两行代码告诉 Nhibernate 当它看到 System.Guid 时将其转换为 Schou-Rode 为我制作的自定义“BinaryGuidType”。可以做到吗?

4

1 回答 1

1

如果您使用的是 Fluent NHibernate,您可以使用约定轻松做到这一点。这是我将所有字符串映射到 varchar 而不是 nvarchar 的方法:

public class PropertyConvention : IPropertyConvention
{
    public void Apply(IPropertyInstance instance)
    {
        SetStringsAsAnsiStringByDefault(instance);
    }

    private void SetStringsAsAnsiStringByDefault(IPropertyInstance instance)
    {
        if (instance.Property.PropertyType == typeof(string))
        {
            instance.CustomType("AnsiString");
        }
        else if (instance.Property.PropertyType == typeof(char))
        {
            instance.CustomType("AnsiChar");
        }
    }
}

我相信更高版本的 NHibernate 内置了对约定的支持,但文档似乎很少。这里有一篇文章供您入门:http ://weblogs.asp.net/ricardoperes/nhibernate-conventions

于 2014-11-10T07:09:03.857 回答