gpt4 book ai didi

c# - 可以将 NHibernate 字符串类型配置为默认为 AnsiString 吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:17:24 25 4
gpt4 key购买 nike

我有一个充满 varchar 值的数据库,NHibernate 正在将 type="string" 映射到 nVarchar。我知道我可以使用 type="AnsiString" 而不是“string”,但似乎能够在项目级别而不是在列中设置它更有意义水平。

有什么方法可以告诉 NHibernate 在全局范围内使用 string=AnsiString 吗?我没有使用 Fluent nHibernate。

更新:我问这个问题是因为使用索引对查询的性能有影响。我继续前进,但我今天才知道将数据库设置为使用 Windows 排序规则而不是(默认但基本上已过时的)SQL 排序规则可能是我的性能问题的解决方案,如果不是我的一致性问题的话。

最佳答案

使用代码映射(来自 NH 核心),您可以执行如下操作:

ModelMapper mapper = new ModelMapper();
// ...
var exportedTypes = assembly.GetTypes();

mapper.BeforeMapProperty += MapperOnBeforeMapProperty;

mapper.AddMappings(exportedTypes);

private void MapperOnBeforeMapProperty(
IModelInspector modelInspector,
PropertyPath member,
IPropertyMapper propertyMapper)
{
// add special handling for fields if you also
// map fields
PropertyInfo info = (PropertyInfo)member.LocalMember;

if (info.PropertyType == typeof(string)
{
propertyMapper.Type(NHibernateUtil.AnsiString, null);
}
}

关于c# - 可以将 NHibernate 字符串类型配置为默认为 AnsiString 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25615667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com