gpt4 book ai didi

c# - 在 Fluent NHibernate 中将 URI 映射到字符串

转载 作者:太空狗 更新时间:2023-10-29 22:20:59 26 4
gpt4 key购买 nike

(有关 LINQ-to-SQL,请参阅 related question)

我想使用 NHibernate 将具有 URI 成员的类映射到 string 列。我究竟应该如何做到这一点?

我认为相关问题的解决方案在这里不起作用 - 我无法声明私有(private)字段并对其进行映射,因为映射需要引用该字段。

最佳答案

除非您需要做一些特别的事情,UriType NHibernate 提供的将工作(我不知道它引入的版本 - 我使用的是 3.1.4000)。无需编写自定义用户类型。

类图

您可以指定 UriTypeClassMap<> :

public class ImportedWebImageMap : ClassMap<ImportedWebImage>
{
public ImportedWebImageMap()
{
Id(x => x.Id);
Map(x => x.SourceUri).CustomType<UriType>();
}
}

属性约定

您可以使用属性约定来映射所有 Uri要使用的属性 UriType :

public class UriConvention : IPropertyConvention
{
public void Apply(IPropertyInstance instance)
{
if (typeof(Uri).IsAssignableFrom(instance.Property.PropertyType))
instance.CustomType<UriType>();
}
}

存储为varchar

如果你想存储Uri在数据库中为 varchar而不是默认的 nvarchar您可以创建一个派生自 UriType 的自定义类型并指定 AnsiString SQL 类型:

public class UriAnsiStringType : UriType
{
public UriAnsiStringType()
: base(new AnsiStringSqlType())
{ }

public override string Name
{
get { return "UriAnsiStringType"; }
}
}

关于c# - 在 Fluent NHibernate 中将 URI 映射到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1933717/

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