Oracle 数据库映射与 Nhibernate(C#)(数据库不包含 PK)

本文关键字:数据库 PK 包含 Nhibernate Oracle 映射 | 更新日期: 2023-09-27 18:35:44

我确实有一个巨大的Oracle数据库,其中包含1000多个表。其中一些没有PK(主键)。我想在 C# 和 Oracle 数据库之间实现 Nhibernate,但由于主键,它不允许我进行映射。有什么解决方案吗?请帮助我解决这个问题。

Oracle 数据库映射与 Nhibernate(C#)(数据库不包含 PK)

NHibernate并不关心数据库中的实际主键。

在您的映射中声明每个实体的"逻辑上"主键就足够了。

如果某些表没有具有唯一值的列的任何组合,则处理这些表将更加困难。

如果您使用某些第三方工具从数据库生成映射和类,最好忘记它并编写自己的映射和类。这些工具可能会从"形状良好"的数据库中生成一个体面的映射,但在不遵循常见做法的传统数据库上却非常无能为力。

即使在"好"的数据库上,使用一些工具来生成映射和模型通常也不是那么好,因为您的域模型不必与您的数据库精确匹配。工具将直接将数据库模式转换为域模型,而编写它允许根据应用程序的实际需求自定义模型。(为子集合或实体定义筛选器,定义继承模型,不映射不需要的列或关系,使实体和实体的属性名称与其相应的表和列不同,设置缓存策略,批处理延迟加载的批处理大小属性,...