C# NHibernate-货币类型-表中有多个字段

C# NHibernate-货币类型-表中有多个字段,c#,sql,nhibernate,C#,Sql,Nhibernate,我正在尝试使用NHibernate将金融交易保存到数据库中,并且遇到一些博客帖子建议使用货币类型,即金额存储为double,货币存储为string,即数据库中有两个字段 出于我的目的,我将在同一个表中有多个财务记录-例如单价、美元税、美元储蓄等。上述方法可行,但会导致重复数据,因为每个字段(在本例3中)的货币类型都有一列。这是不必要的,因为货币在储蓄和价格等方面总是一样的-如果一个是美元,另一个是美元 有没有人遇到过类似的问题?如果有,你能告诉我你最终的解决方案吗 谢谢 JP我在很多地方也看到过

我正在尝试使用NHibernate将金融交易保存到数据库中,并且遇到一些博客帖子建议使用货币类型,即金额存储为double,货币存储为string,即数据库中有两个字段

出于我的目的,我将在同一个表中有多个财务记录-例如单价、美元税、美元储蓄等。上述方法可行,但会导致重复数据,因为每个字段(在本例3中)的货币类型都有一列。这是不必要的,因为货币在储蓄和价格等方面总是一样的-如果一个是美元,另一个是美元

有没有人遇到过类似的问题?如果有,你能告诉我你最终的解决方案吗

谢谢


JP

我在很多地方也看到过同样的事情,到目前为止,我还没有看到任何解释。有什么用?这不是人们做生意的方式,也不是逻辑系统的工作方式。如果我在美国做国际业务,我的系统仍将以美元为内部基础

对于需要汇率的事件,货币作为边界条件非常重要。甚至是一家国际银行。我现在把我所有的毒品钱,美元,寄给开曼群岛,在那里我的钱也可以用美元结算。也许你的是欧元。所以他们得到了它,他们所做的就是将两者转换成他们内部使用的任何货币,不管是什么。现在他们必须跟上这些东西,但他们在任何时候都必须知道美元/贝壳之间的汇率,以了解它们对我的价值,以及贝壳/欧元之间的汇率,以了解它们对你的价值。这个小玩意儿也不为他们蹲,它是一个有价值的东西,怎么可能呢?在这种情况下,货币将固定在账户层面,而不是一堆浮动的东西

在一般情况下,货币将由其他东西固定,如您观察到的,在行级别。一行数据是相关的,你应该能够计算货币价值,在这种情况下,一行中的货币必须是相同的。也许我在欧洲做生意,不得不用欧元报价。出于历史目的,我可能希望记录两种货币的报价与付款。我怀疑这是否是一个单行设计,但如果我认为是,您描述的货币对象是一个包含两个组件的单值对象。它应该被视为一个单独的实体,我认为我在这里描述的内容在语义上不同于“Money”对象,也可以用十进制/货币列来明确描述,我们不尝试将其组合为sing;e货币价值,因为它们无法比较,也无法计算

我不想走这条路,因为这会导致语义上微妙的不一致,而且可能什么都没有添加。你真的打算在哪里使用一种按行计算的货币不会给你同样的东西,通常是以一种更理性的方式


但如果一位经理坚持你做了一些根本毫无意义或更糟糕的事情,就NHibernate而言,你已经声明了一个单一的原子实体,货币恰好有两个组成部分,一个十进制和一个字符串。因为金钱现在是一个单一的原子单位,你必须始终为每一笔钱都有两个列,没有办法避免重复列。

我的最初反应是:只需接受重复;它将大大简化对象模型。