首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF6数据库第一个项目中的组合键和零填充

EF6数据库第一个项目中的组合键和零填充
EN

Stack Overflow用户
提问于 2018-02-08 22:55:35
回答 2查看 58关注 0票数 0

我在SQL Server 2016数据库中有三个表:事件、比赛、季节。Races表是事件表的PK和季节表的PK的复合主键。我希望将Events表主键的主键填零,这样它就是3位数。比赛所需的组合键将采用类似2018001的格式,其中2018年是seasonId,001是eventId。

为此,我还使用了EF6和数据库优先的方法。这首先是一个合理的计划吗?如果是这样,我如何设置Events表以使用适当的零填充自动递增?

EN

回答 2

Stack Overflow用户

发布于 2018-02-08 23:02:59

当使用非数据库优先方法时,这就是为什么需要sql guys ;)。

零填充似乎是一个随意的要求,虽然它看起来很酷,但在功能上会造成问题。通过谷歌查找邮政编码问题,了解类似挑战的更多信息。

我建议使用tableid int identity(1,1) not null作为代理键。填充是在返回结果的usp_中完成的。

票数 0
EN

Stack Overflow用户

发布于 2018-02-08 23:16:23

我建议使用三列: eventid、seasonID和DisplayId。这样,您就可以正确地联接用于查询的int字段,并使用计算字段来填充DisplayID的数字。注意,这会稍微减慢插入和更新的速度,但是考虑到表的性质,它可能不会被注意到。最好在insert时在数据库中填充一次,这样每次调用数据时都会浪费时间进行计算,所以这不属于表示层。

在SQl服务器中填充的方法是正确使用并一起复制,如下所示

代码语言:javascript
复制
right(replicate ('0',4)+ cast(event_id as Varchar(20)), 10)

确保填充足够的空间来覆盖数据库在一年中所能想到的最大事件数。

然后与季节to相结合:

代码语言:javascript
复制
Cast(seasonId as varchar(4)) + right(replicate ('0',4)+ cast(event_id as Varchar(20)), 10)

在创建计算字段的过程中执行此操作(并持久化计算字段,这样它就不必一直重新创建。

有关如何创建计算字段的信息,请参阅以下问题:

How can I set up a simple calculated field in SQL Server?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48688366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档