代码之家  ›  专栏  ›  技术社区  ›  Brian Low

生成业务密钥

  •  2
  • Brian Low  · 技术社区  · 17 年前

    为业务密钥生成唯一编号的最佳方法是什么?

    在下面的示例中,我们的客户想要一个数字(OrderNumber),他们可以用它来指代订单。

    <class name="Order">
      <id name="Id" ... />
    
      <property name="OrderNumber" column="order_number" />
    
    </class>
    
    1 回复  |  直到 12 年前
        1
  •  6
  •   Matt Hinze    17 年前

    我发现执行这些任务的最佳方式是用代码编写它们,而不是将它们泄漏到数据层。我不让NHibernate计算它。我将这个概念视为应用程序的一个成熟功能。这很好,因为我可以为它编写测试,并且具有灵活性。有时在计算下一个序列号时还涉及其他因素,比如与另一个实体的关系。也许您希望在客户端领域内使用连续的订单号:客户端02为02-001、02-002,客户端01为01-001、01-002。

    因此,我将SequenceNumber的概念推广到域模型对象,用NHibernate映射它,并在我这边执行逻辑。每当我需要一个新的界面时,我都会使用一个看起来像这样的界面

    public interface ISequenceRepository
    {
        string GetNextSequenceNumber(Customer customer);
    }