2015-06-24 78 views
0

有没有什么办法,使自动生成主键字符串类型,INTGUID自动生成的字符串主键

public class User 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] //??? 
    public string Id { get; set; } // string type 

    public string Name { get; set; } 
    public string Login { get; set; } 
} 

在下列问题的情况下,“为什么呢?”:事情是,在我目前的模型PK是登录了,我想在不知不觉中单独的登录和主键,节省的PK那是已经在使用。

+0

登录 - 是一个用户名吗?我预测有一天有人会说“我们不喜欢自动生成的登录信息,我们可以创建自己的登录信息吗?”或者“我们可以使用电子邮件地址登录吗?”那么你将不得不修复所有这些外键...... – Colin

+0

没错。目前登录是主键。我想使登录成为独立的字段,但保存主键,并为新用户生成PK。看起来手动生成是唯一的方法。 –

+0

我想我会让'Id'为一个带有身份的整数,修正所有那些当前是字符串的外键 - 这是一种痛苦,但是无论如何你必须做一些修正。然后我会将'Login'作为“自然”键,并按照此处所述进行验证:http://stackoverflow.com/a/18736484/150342 – Colin

回答

1

SQL Server不支持字符串列类型的标识。您如何期望自定义键字符串看起来像? 你可以做你的钥匙与Guid类型,然后取字符串:

guid.ToString();