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

spe*_*der 9 entity-framework data-annotations entity-framework-5

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

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

[StringLength(36)]
public string UserIdentifier{ get; set; }
Run Code Online (Sandbox Code Playgroud)

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

krz*_*chu 13

如果您想继续使用Data Annotations,那么只需使用:

[StringLength( 36 )]
[Column( TypeName = "char" )]
public string UserIdentifier{ get; set; }
Run Code Online (Sandbox Code Playgroud)


spe*_*der 8

好.我自己找到了答案.

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

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

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

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

        modelBuilder.Configurations.Add(new UserProfileConfiguration());
    }
Run Code Online (Sandbox Code Playgroud)

然后我在做生意,我得到一个char(36)专栏.好极了.