0

我正在开发一个贷款管理应用程序。我有一个名为 Loan 的表/实体,我将它们全部保存在其中。我需要的是使用 autoinc(1、2、3、4、5、6 等)保存已开票的贷款,并使用另一个 autoinc 序列来保存所有未开票的贷款(例如:20000、20001、20002、 ETC)。想法是将两笔贷款放在同一个表中,但具有不同的 ID,然后,根据状态,将出现已开票或未开票的贷款。该应用程序已经处于最后阶段,因此不能使用 2 个不同的表来保存每个表。我需要建议来找到解决方案,看看是否可以做到。顺便说一句,我正在使用带有 C# 的 Entity Framework 4。

基本上,简而言之,我需要为表的一个字段创建 2 个 autoinc 序列。第二个 autoinc 编号必须以高编号开始,以免第一个到达。

希望有人可以帮助我..

编辑: 伙计们,我想详细说明这个问题,因为我不知道你是否明白这样做的意义。无发票贷款的想法是让用户“非法”提供贷款而无需为此纳税。这就是为什么它应该被区分。我只是不能使用一个 ID 序列号,因为如果一些检查员查看 ID 号会说,“好吧,我们这里有贷款 1、2、3、7、8,但它在哪里 4、5、6?” 拥有两个序列的想法,一个比另一个高很多,高到无法在第一个之前到达它,就是为了实现这一点。使用相同的序列,但有另一个字段来区分是否开票可能是一种可能的解决方案,但由于我有很多用户,我喜欢 SQL 自动设置贷款 ID 的方式。

4

1 回答 1

0

正如 Greg 所提到的,首先,您需要在表上关闭自动递增。然后创建一个您将从数据访问层调用的存储过程,它将通过计算正确的 Id 在表上创建两条记录。这样,数据访问层和业务逻辑将与 db 级任务无关。

正如 Greg 再次指出的那样,当应用程序数量达到 20K 大关时,应制定相应的策略来处理这种情况。

如果您不介意我问,您为什么选择基于主/候选键的状态的方法?为什么不维护一个列来说明贷款是否已开具发票?由于您使用的是 EF,如果您采用这种方法,您应该能够使用 Table per Hierarchy 根据鉴别键(http://www.c-sharpcorner.com/UploadFile/ff2f08/entity投影两组数据-framework-4-0-tph-part-2/http://weblogs.asp.net/manavi/archive/2010/12/24/inheritance-mapping-strategies-with-entity-framework-code-first- ctp5-part-1-table-per-hierarchy-tph.aspx )

或者..为什么不查询发票表,如果可用(子查询或联接)来确定贷款是否开票。

干杯

于 2013-01-31T07:51:23.223 回答