Я пытаюсь настроить персонализированную строку как первичный ключ с помощью Code First Entity Framework.Пользовательская строка как первичный ключ с базой объектов
У меня есть помощник с функцией, которая возвращает случайную строку n-символов, и я хочу использовать ее для определения моего идентификатора, как для видеокодека 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; }
}
}
Можно ли определить, как должен быть присвоен идентификатор непосредственно в модели? Должен ли я включать код помощника в модель вместо использования внешнего класса?
из любопытства, зачем использовать обычай, сгенерированный случайным образом строка, если GUID является (приблизительно) то же самое? – Bwolfing
Вы подвергаете свой код риску, есть возможность получить две одинаковые случайные строки – Monah
@Bwolfing Основная причина в том, что я хотел что-то более удобное для пользователя. Гид, даже если он преобразован в base64, по-прежнему составляет 22 символа. Например, если вы хотите включить ссылку на свой профиль на форуме, более короткий выглядит лучше. –