代码第一列,类型为char(36)

时间:2013-02-14 13:39:38

标签: entity-framework data-annotations entity-framework-5

所以我有一个UserProfile模型类作为SimpleMembership的一部分。在其中,我需要存储另一个char(36)类型的数据库中存在的旧标识符。我喜欢把它改成像一个独特的标识符更合理的东西,但这超出了今天活动的范围。

我当前的注释会创建一列nvarchar(36)

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

我想要一列char(36)代替。这可能吗?

2 个答案:

答案 0 :(得分:13)

如果您想继续使用数据注释,只需使用:

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

答案 1 :(得分:7)

确定。我自己找到了答案。

如果我为UserProfile创建以下配置类:

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

然后在我的OnModelCreating中覆盖DbContext以添加此配置:

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

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

然后我开始营业,我得到一个char(36)专栏。耶。