NHibernate - 如何流畅地将基于 id 的属性映射为从域模型到数据库的一种方式

发布于 2024-11-29 17:18:16 字数 496 浏览 1 评论 0原文

在我的应用程序实体内部由字符串键标识 - 其 ID 的 baseN 表示形式,例如 xAdWzC 这是数字 Id 的 BaseN (52) 表示形式。

数字 Id 是在插入之前使用类似于 oracle 序列算法生成的(我的自定义 id 生成器)。

如何映射我的类,该类基本上具有要保存在数据库中的 2 种 Id 表示形式,其中有两列,一列是数字 - 主键,另一列 - 字符串键以更好地标识数据库中的行?我显然不需要 2 个主键,并且更喜欢数字 PK。

字符串键只是一个围绕 C# 中的数字键的属性,如下所示

public string Key
{
     get { return BaseNFunction(Id); }
}

基本上我希望此映射成为 db.key 的一种方式。当从数据库加载项目时,必须完全忽略此列。

NHB 映射会是什么样子? 这个问题是很难还是只是没有被发现?我认为它不值得赏金,但请帮助我。

Inside my app entity is identified by a string key - a baseN representation of its ID like
xAdWzC which is a BaseN (52) representation of numeric Id.

numeric Id is generated using similar to oracle sequence algorithm, before insertion ( my custom id generator).

How do I map my class that basicly has 2 representations of Id to be saved in db with 2 columns one numeric - primary key and the other - a string key to identify rows in db better? I obviously dont need 2 primary keys and would prefer numeric PK.

A string key is just a property that wraps around numeric key in C# like this

public string Key
{
     get { return BaseNFunction(Id); }
}

Basicly I want this mapping to be one way to db. When item is loaded from db this column has to be completely ignored.

How would the NHB mapping look like?
Is the question difficult or its just wasn't spotted? I dont think its worth a bounty but please help me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

疾风者 2024-12-06 17:18:16

只需将生成的属性设置为只读(在 XML 中为 access="readonly";在 Fluent 中查找类似的内容)

在这种情况下只读意味着从实体读取属性并将其写入数据库,但不是相反

Just make the generated property readonly (it's access="readonly" in XML; look for something similar in fluent)

Read-only in this case means the property is read from the entity and written to the DB, but not the other way around

亽野灬性zι浪 2024-12-06 17:18:16

将数字键设为主键。这将自动给它一个唯一的约束和一个索引。然后使您的字符串键列只是一个明确具有唯一约束的常规列。如果您计划通过字符串进行查找,请不要忘记向字符串列添加索引。

Make your numeric key the primary key. This will automatically give it a unique constraint and an index. Then make your string key column just a regular column with a unique constraint explicitly. Don't forget to also add an index to the string column if you plan on doing lookups by it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文