[英]Entity Framework 6: Trim does not work properly
我有一個進程,應該將數據從一個數據庫實體復制到另一個數據庫實 因此我在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
使用Trim操作,我想讓它看起來像這樣: 253089
。 當我執行它時,第一種方式看起來很好。 但是如果我直接在數據庫上運行這個SQL查詢,它會得到如下結果:
SELECT DATALENGTH(code), len(code), code
FROM staging.ReferenceLoader
datalength | len | code
11 | 6 | 253177
11 | 6 | 270724
為什么Entity Framework不執行修剪操作?
Code字段的類型必須是varchar(11),因為char(11)具有固定長度。 DB因此將始終填充到全長。 請將其更改為varchar。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.