实体框架6:修剪无法正常工作

时间:2017-03-13 07:13:21

标签: c# sql entity-framework linq

我有一个应该将数据从一个数据库实体复制到另一个数据库实体的过程。因此,我在 C#中使用 Entity Framework 6 LINQ 表达式:

public partial class ReferenceEntities : DbContext {
     public Nullable<System.DateTime> ActivationDate { get; set; }

     public string Code { get; set; }
}

this.ReferenceEntities.ReferenceEntity.AsEnumerable().Select(referenceEntry => new StagingReferenceLoader() {
    ActivationDate = referenceEntry.ActivationDate,
    Code = referenceEntry.Code?.TrimStart('0').Trim()
});

this.ProcessingEntities.StagingReferenceLoader.AddRange(stagingEntries);
this.ProcessingEntities.SaveChanges();

Code是受此流程影响的两个实体中的char(11)列。

示例:

StagingReferenceLoader 中,Code值如下所示:00000253089

使用修剪操作,我想让它看起来像这样:253089。当我执行它时,第一种方式看起来很好。 但是如果我直接在数据库上运行这个SQL查询,它会得到如下结果:

SELECT DATALENGTH(code), len(code), code
FROM staging.ReferenceLoader

datalength | len | code
11         | 6   | 253177     
11         | 6   | 270724     

为什么Entity Framework不执行 trim 操作?

1 个答案:

答案 0 :(得分:2)

Code字段的类型必须是varchar(11),因为char(11)具有固定长度。 DB因此将始终填充到全长。请将其更改为varchar。