使用实体框架的第二个唯一列

时间:2018-09-11 13:51:52

标签: entity-framework entity-framework-6

我正在使用EF6,在我的客户表中,我希望有一个GUID类型且唯一的列。不必是主要的。我要使用它的目的是允许用户取消订阅电子邮件。因此,尽管每个客户在UnsubscribeEmailGuid列下都有一个GUID,并且我以链接的形式发送该GUID,但是当他们单击它时,我可以确定它是哪个客户,并将他们的偏好设置为退订。

现在如何使用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创建客户。

我很确定我必须对上述二传手属性进行某些操作,但是我的大脑已经停止工作了!

有人可以打扰我吗?还是我完全走错了路?

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试使用此示例,您必须初始化对象,例如,我有用户类,属性类型为GUID,因此:

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

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

然后,当您创建用户的新实体时,构造函数会在UnsubscribeEmailGuid属性中分配一个值。除此之外,您可以将DataAnotation用于唯一索引。