2017-03-13 6 views
3

私は、あるデータベースエンティティから別のエンティティへデータをコピーするプロセスがあります。だからC位で式Entity Frameworkの6LINQを使用する:エンティティフレームワーク6:トリムが正しく機能しない

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)カラムです。

例:253089:私はそれがこのように見えるようにしたいトリム操作で00000253089

StagingReferenceLoaderCode値は次のようになります。私はそれを実行したとき、最初の方法でこれは正常に見えます。 しかし、私は直接それは次のように私の結果を与えるデータベースにこのSQLクエリを実行した場合:

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

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

はなぜEntity Frameworkのは、ちょうどトリム操作をしないのですか?

+4

[コード]をvarchar(11)に変更できますか?問題は、char(11)は常に固定長であることだと思います。 –

+0

私はそれを試みます。ありがとう – rbr94

+0

@カルロスアドリアンそれは動作します。ありがとうございます。 – rbr94

答えて

2

char(11)は固定長なので、Codeフィールドのタイプはvarchar(11)でなければなりません。 DBは常にそれを全長に埋めるでしょう。それをvarcharに変更してください。

関連する問題