c# - FluentNhibernate 映射两个表 oneToMany 在映射中使用唯一的主键 instea
问题描述
我正在用 C# 编写桌面项目。我正在使用 Nhibernate 与数据库进行通信。此外,我使用 FluentNhibernate 来映射模型,但我陷入了映射的某些部分。这是我在 ProductMap 中的映射类
丢失地图
public LosingMap()
{
Id(x => x.id);
Map(x => x.reason);
Map(x => x.quantity);
Map(x => x.lose_sum);
Map(x => x.rate);
Map(x => x.deleted);
Map(x => x.create_date);
Map(x => x.update_date);
References(x => x.currency).Column("CurrencyCode");
Table("Loosing");
}
}
这是货币地图
货币地图
public CurrencyMap()
{
Id(x => x.id);
Map(x => x.code).UniqueKey("currency_code");
Map(x => x.name);
Map(x => x.shname);
Map(x => x.symbol);
Map(x => x.deleted);
HasMany(x => x.Losings).Cascade.All();
Table("currency");
}
}
这是我的货币表中有一个主键和一个唯一键我如何在我的 LoosingMap 类中引用我的唯一键而不是主键???
解决方案
使用KeyColumn
上CurrencyMap
使用:
public CurrencyMap()
{
Map(x => x.id); // Optional
KeyColumn(x => x.code)
Map(x => x.name);
Map(x => x.shname);
Map(x => x.symbol);
Map(x => x.deleted);
HasMany(x => x.Losings).Cascade.All();
Table("currency");
}
}
根据FluentNHibernate“HasMany / 一对多”文档,“与引用一样,外键默认为 Author_id,您可以使用 KeyColumn 方法覆盖它或使用约定更改默认行为。”,所以你也可以使用:
HasMany(x => x.Losings).KeyColumn(x => x. CurrencyCode).Cascade.All();
推荐阅读
- vhdl - 如何设置来自不同进程或模块的向量位?
- python - 制作 DJANGO 注册页面的最简单方法是什么?
- javascript - Three.js 方法将网格返回为未定义
- python - Pandas:用无替换列中所有小写字符串
- laravel - Laravel - Eloquent 合并集合与单个项目
- python - 为什么 pandas.series.map 的速度如此之慢?
- android - 如何在android中十秒后禁用按钮?
- android - 从firebase数据库检索数据到getvalue中的listview null
- angular - 实例化 Angular 拦截器
- meteor - 在捆绑的流星应用程序上安装 nmp 失败