使用 Code First 将列类型设置为 char(36)。

10

所以我有一个UserProfile模型类作为SimpleMembership的一部分。在其中,我需要存储另一个类型为char(36)的数据库中存在的遗留标识符。我很想将其更改为更合理的东西,例如uniqueIdentifier,但这超出了今天活动的范围。

我的当前注释创建了一个nvarchar(36)列。

[StringLength(36)]
public string UserIdentifier{ get; set; }

我希望有一列的 char(36)。这是否可能?


这个问题的答案可能会有所帮助。 - zs2020
@sza 没有,我找到了一种方法。无论如何还是谢谢你。 - spender
2个回答

13

如果您希望继续使用数据注释,则只需简单地使用:

[StringLength( 36 )]
[Column( TypeName = "char" )]
public string UserIdentifier{ get; set; }

10

好的。我自己找到了答案。

如果我为我的用户配置文件创建以下配置类:

class UserProfileConfiguration:EntityTypeConfiguration<UserProfile>
{
    public UserProfileConfiguration()
    {
        this.Property(p => p.UserIdentifier)
            .HasMaxLength(36)
            .IsFixedLength()
            .IsUnicode(false);
    }
}

然后在我的 DbContext 中覆盖 OnModelCreating 方法,并添加此配置:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Configurations.Add(new UserProfileConfiguration());
    }

那我就可以开始做生意了,并且我得到了一个char(36)列。耶。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接