Fluent nhibernate 传统表的Fluent nhiberante映射
如何为遗留表定义fluent nhibernate映射 我有四张桌子Fluent nhibernate 传统表的Fluent nhiberante映射,fluent-nhibernate,fluent-nhibernate-mapping,legacy-database,Fluent Nhibernate,Fluent Nhibernate Mapping,Legacy Database,如何为遗留表定义fluent nhibernate映射 我有四张桌子 CTType(idGUID,Namevarchar(100),DateOFbirthdatetime) CTType_Legacy(idGUID,CTType_Legacy_ididentity int) CTTypeMap(idGUID,createdOndatetime,CtType\u idGUID) CTTypeMap_遗留(idGUID,CT_-Type_-idint) 信息 前两个表固定了50条记录。当为客户机配
- 前两个表固定了50条记录。当为客户机配置数据库时,将首次填充这些表
- 对于前两个表,ID是映射列(主forign键)
- 最后两个表CtType_id映射到CtType表的id列
public class CTTypeMapMap :Enity<CTTypeMap>
{
Public CTTypeMapMap()
{
Id(x => x.ID);
Map(x => x.createdOn);
References(x = x.CtType);
Join("CTTypeMap_Legacy", join =>
{
join.KeyColumn("Id");
join.Map(x => x.CTTypeMap).Column("CT_Type_id"); //not working
});
}
}
公共类CTTypeMapMap:Enity
{
公共CTTypeMapMap()
{
Id(x=>x.Id);
Map(x=>x.createdOn);
参考文献(x=x.CtType);
Join(“CTTypeMap_Legacy”,Join=>
{
join.KeyColumn(“Id”);
join.Map(x=>x.CTTypeMap.Column(“CT_Type_id”);//不工作
});
}
}
表CTTypeMap\u Legacy的列CT\u Type\u id的值应为CTType\u Legacy\u id的列值。我无法将正确的值插入表CTTypeMap\u Legacy的CT\u Type\u id
有人能告诉我如何在注释突出显示的行上进行映射吗?不清楚您在哪里设置值,但我猜您的意思是
join.References(x => x.CTType_Legacy).Column("CT_Type_id");
更新:以下diables延迟加载
join.References(x => x.CTType).Column("CT_Type_id").PropertyRef("CTType_Legacy_id");
或
join.Map(x=>FakeProperty.Column(“CT_Type_id”).Access.Using();
//在伊格特
公共对象Get(对象obj)
{
return((CTTypeMap)obj.CTType.LegacyId;
}
表CTType_Legacy和CTTypeMap_Legacy在c#中没有定义为实体类,因此您可以看到mappind被定义为Join(“CTTypeMap_Legacy”,Join=>)因此,上述解决方案将不起作用。当使用通过脚本设置的初始化数据运行数据库时,表CTType和CTType_legacy已经填充。因此,只需根据用户在UI上的操作填充其他两个表。您的解决方案,即join.References(x=>x.CTType).Column(“CT_Type_id”).PropertyRef(“CTType_legacy_id”);未获取需要插入到CTTypeMap_旧版表的CT_类型_id列中的表CTType_旧版的CTType_旧版id。它假定您从数据库中引用了CTType。尽管如此,你仍然不见踪影。发布插入代码以及您期望生成的sql。
join.Map(x => FakeProperty).Column("CT_Type_id").Access.Using<MyPropertyAccessor>();
// in Igetter
public object Get(object obj)
{
return ((CTTypeMap)obj).CTType.LegacyId;
}