【发布时间】:2016-09-23 14:46:21
【问题描述】:
我正在尝试使用 Code First Entity Framework 将个性化字符串设置为主键。
我有一个帮助器,它带有一个返回 n 字符随机字符串的函数,我想用它来定义我的 Id,就像 YouTube 视频代码一样。
using System.Security.Cryptography;
namespace Networks.Helpers
{
public static string GenerateRandomString(int length = 12)
{
// return a random string
}
}
我不想使用自动递增的整数(我不希望用户使用机器人太容易访问每个项目)也不想使用 Guid(太长而无法向用户显示)。
using Networks.Helpers;
using System;
using System.ComponentModel.DataAnnotations;
namespace Networks.Models
{
public class Student
{
[Key]
// key should look like 3asvYyRGp63F
public string Id { get; set; }
public string Name { get; set; }
}
}
是否可以定义如何在模型中直接分配 Id? 我应该在模型中包含帮助程序的代码而不是使用外部类吗?
【问题讨论】:
-
出于好奇,如果 GUID(大致)相同,为什么还要使用自定义的随机生成的字符串?
-
您将代码置于风险之中,有可能获得 2 个相同的随机字符串
-
@Bwolfing 主要原因是我想要一些更用户友好的东西。即使转换为 base64,Guid 仍然是 22 个字符长。例如,如果您想在论坛上包含指向您的个人资料的链接,那么较短的链接会更好。
-
@HadiHassan 我想到了这一点,并计划进行验证以确保生成的字符串未被使用。
-
@LehtonenM。说得通!我总是选择整数,因为搜索和比较从根本上来说更容易/更快,但字符串提供了更加用户友好的体验和外观:)
标签: c# asp.net-mvc entity-framework uniqueidentifier