rip*_*234 5 .net c# nhibernate orm fluent-nhibernate
(请参阅LINQ-to-SQL的相关问题)
我想使用NHibernate 将具有URI成员的类映射到string列.我究竟该如何实现这一目标?
我不认为给出相关问题的解决方案在这里工作 - 我不能声明私有字段并映射它,因为映射需要引用该字段.
除非你需要做一些特殊的事情,UriTypeNHibernate提供的工作(我不知道它引入了什么版本 - 我使用的是3.1.4000).无需编写自定义用户类型.
您可以UriType在ClassMap<>:
public class ImportedWebImageMap : ClassMap<ImportedWebImage>
{
public ImportedWebImageMap()
{
Id(x => x.Id);
Map(x => x.SourceUri).CustomType<UriType>();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用属性约定来映射Uri要使用的所有属性UriType:
public class UriConvention : IPropertyConvention
{
public void Apply(IPropertyInstance instance)
{
if (typeof(Uri).IsAssignableFrom(instance.Property.PropertyType))
instance.CustomType<UriType>();
}
}
Run Code Online (Sandbox Code Playgroud)
如果要将Uri数据库存储为数据库varchar而不是默认值nvarchar,则可以创建从中派生的自定义类型UriType并指定AnsiStringSQL类型:
public class UriAnsiStringType : UriType
{
public UriAnsiStringType()
: base(new AnsiStringSqlType())
{ }
public override string Name
{
get { return "UriAnsiStringType"; }
}
}
Run Code Online (Sandbox Code Playgroud)