DisplayName - 'User'+ UserId - 最佳方法

时间:2010-10-30 16:51:08

标签: sql-server triggers default-value

我想做一些类似于做DisplayName的事情。当有人没有输入DisplayName时,我想将其默认为'User'+ UserId。因此,第一个注册的用户将获得User1 - 因为UserId将为1,第二个User2 - 因为UserId将为2,依此类推。

我能想到的最简单的方法是使用触发器,但我不喜欢触发器。我可以保存用户,然后在保存后更新用户(基本上是触发器,但在我的代码中完成)。关于我如何处理这个的任何其他想法?有没有办法可以在数据库中的列上设置默认值?

我使用的是Asp.Net MVC 2,C#4,EF4和SQL Server 2008.

4 个答案:

答案 0 :(得分:3)

您可以在存储过程中设置用户名。如果用户名已传递给存储过程,则只需保存即可。否则,获取最后输入的用户的主键ID并向其添加1。将其格式化为您喜欢的任何内容(例如User + newID)并将其另存为新用户的用户名。

答案 1 :(得分:3)

Select Coalesce(DisplayName, 'User' + Cast(UserID as varchar)) as UserName

答案 2 :(得分:0)

您可以拥有computedColumn

[UserName] AS ('User' + CAST(UserID AS VARCHAR)) PERSISTED

答案 3 :(得分:0)

在保存到数据库之前,我倾向于生成它。没有输入=制作一个。

我也没有用户User1,User2,...但用户+随机:user6238945,user9287561,user8934678等

如果您使用1,2,3,4等,那么您将暴露内部序列。如果有人获得“user4”,那么我知道存在其他用户1到3以及5号.AOL或Compuserve(?)多年来一直使用这种暴露来进行网络钓鱼攻击。

相关问题