我正在处理一些无法修改的旧供应商代码。我想用一个更易于使用的抽象层来包装数据库。
给定以下两个表,我需要为 Process.Route 创建一个映射,它将找到给定进程的匹配路由,但可以是 dbo.Route.SourceProcessID 或 dbo.Route.DestinationProcessID:
TABLE [dbo].[Route](
[RouteID] [bigint] IDENTITY(1,1) NOT NULL,
[SourceProcessID] [bigint] NOT NULL,
[DestinationProcessID] [bigint] NOT NULL
TABLE [dbo].[Process](
[ProcessID] [bigint] IDENTITY(1,1) NOT NULL
)
这并不优雅,但我最终想出了以下内容:
public class Process
{
public virtual IList<Route> SourceRoutes { get; set; }
public virtual IList<Route> DestinationRoutes { get; set; }
}
public class ProcessOverride : IAutoMappingOverride<Process>
{
public void Override(AutoMapping<Process> mapping)
{
mapping.HasMany(proc => proc.SourceRoutes).Table("Routes").KeyColumn("SourceID");
mapping.HasMany(proc => proc.DestinationRoutes).Table("Routes").KeyColumn("DestID");
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)