C# Fluent NHibernate 概览映射
C# Fluent NHibernate Overview Mapping
我有三个类:
public class BaseEntity
{
public int Id { get; set; }
}
public class DocumentOverview : BaseEntity
{
public string Name { get; set; }
}
public class Document : DocumentOverview
{
public byte[] Data{ get; set; }
}
在我的应用程序中有一棵树,我想加载文档名称并将它们列在那里。只有选择TreeItem时,我才加载文档实体以节省流量。
我不想在我的映射中有冗余代码,所以我的第一次尝试是这样的:
public class DocumentOverviewMaps<T> : ClassMap<T> where T : DocumentOverview
{
public DocumentOverviewMaps()
{
Table("Documents");
Id(x => x.Id);
Map(x => x.Name).Not.Nullable();
}
}
public class DocumentMaps : DocumentOverviewMaps<Document>
{
public DocumentMaps()
{
Map(x => x.Data).CustomType<BinaryBlobType>().Nullable();
}
}
这不起作用我总是得到大文档实体,即使在加载概览时也是如此。
我发现您可以使用 SubclassMap<> 但这不起作用,因为它用于从不同的表加载。
有什么方法可以让这个运行没有多余的代码吗?
怎么样:
public class DocumentBaseMap : ClassMap<T> where T : DocumentOverview
{
public DocumentBaseMap()
{
Table("Documents");
Id(x => x.Id);
Map(x => x.Name).Not.Nullable();
}
}
public class DocumentOverviewMap : DocumentBaseMap<DocumentOverview>
{
}
public class DocumentMap : DocumentBaseMap<Document>
{
public DocumentMap()
: base()
{
Map(x => x.Data).CustomType<BinaryBlobType>().Nullable();
}
}
我想知道您的基础 class 映射中缺少类型参数是否是您只获得 Document
类型的原因?空的DocumentOverviewMap
class有点臭。如果问题是需要定义 Document
和 DocumentOverview
类型的映射,那么可能有更好的方法来做到这一点。
我有三个类:
public class BaseEntity
{
public int Id { get; set; }
}
public class DocumentOverview : BaseEntity
{
public string Name { get; set; }
}
public class Document : DocumentOverview
{
public byte[] Data{ get; set; }
}
在我的应用程序中有一棵树,我想加载文档名称并将它们列在那里。只有选择TreeItem时,我才加载文档实体以节省流量。
我不想在我的映射中有冗余代码,所以我的第一次尝试是这样的:
public class DocumentOverviewMaps<T> : ClassMap<T> where T : DocumentOverview
{
public DocumentOverviewMaps()
{
Table("Documents");
Id(x => x.Id);
Map(x => x.Name).Not.Nullable();
}
}
public class DocumentMaps : DocumentOverviewMaps<Document>
{
public DocumentMaps()
{
Map(x => x.Data).CustomType<BinaryBlobType>().Nullable();
}
}
这不起作用我总是得到大文档实体,即使在加载概览时也是如此。
我发现您可以使用 SubclassMap<> 但这不起作用,因为它用于从不同的表加载。
有什么方法可以让这个运行没有多余的代码吗?
怎么样:
public class DocumentBaseMap : ClassMap<T> where T : DocumentOverview
{
public DocumentBaseMap()
{
Table("Documents");
Id(x => x.Id);
Map(x => x.Name).Not.Nullable();
}
}
public class DocumentOverviewMap : DocumentBaseMap<DocumentOverview>
{
}
public class DocumentMap : DocumentBaseMap<Document>
{
public DocumentMap()
: base()
{
Map(x => x.Data).CustomType<BinaryBlobType>().Nullable();
}
}
我想知道您的基础 class 映射中缺少类型参数是否是您只获得 Document
类型的原因?空的DocumentOverviewMap
class有点臭。如果问题是需要定义 Document
和 DocumentOverview
类型的映射,那么可能有更好的方法来做到这一点。