Второй уникальный столбец с использованием Entity Framework - PullRequest
0 голосов
/ 11 сентября 2018

Я использую EF6, и в моей таблице клиентов мне нравится иметь столбец, который имеет тип GUID и является уникальным.Не должен быть основным.Я хочу использовать это для разрешения пользователям отказаться от подписки на электронные письма.Поэтому я думаю, что у каждого клиента есть GUID в столбце, скажем, UnsubscribeEmailGuid, и я отправляю его в виде ссылки, когда он щелкает по нему, я могу выяснить, какой это клиент, и установить его предпочтение отписаться.

Теперь, как я могу использовать EF, определить этот столбец и убедиться, что он имеет какое-то значение при создании клиента.Я как бы попробовал:

    public Guid UnsubscribeEmailGuid{ get; set; }

и:

        Property(c => c.UnsubscribeEmailGuid)
            .IsRequired()
            .HasColumnAnnotation(IndexAnnotation.AnnotationName, new IndexAnnotation(new IndexAttribute {IsUnique = true}));

Но это создает клиента с Guid 00000000-0000-0000-0000-000000000000.

Я почти уверен, что должен сделатьчто-то в указанном выше свойстве setter, но мой мозг перестал работать!

Может кто-нибудь, пожалуйста, подтолкнуть меня?Или, может быть, я не на том пути?

Спасибо.

1 Ответ

0 голосов
/ 11 сентября 2018

попробуйте с этим примером, вы должны инициализировать объект, например, у меня есть класс пользователя и тип свойства GUID, поэтому:

[Table( "users" )]
public class user{
    [Index(IsUnique = true)]
    public Guid UnsubscribeEmailGuid{ get; set; }

    public user(){
        this.UnsubscribeEmailGuid = new Guid();
    }
}

затем, когда вы создаете новую сущность пользователя, конструктор присваивает значение в свойстве UnsubscribeEmailGuid.Кроме того, вы можете использовать DataAnotation для уникального индекса.

...