2012-06-01 46 views
3

我看過類似的問題,建議我應該使用列屬性來更改列的名稱,但我已經做到了這一點,我仍然得到錯誤。這裏是我的模型類:如何解決錯誤「名稱:指定的名稱不被允許:_destroy'?

public class Task 
{ 
    public int TaskID { get; set; } 
    public string TaskDescription { get; set; } 
    public bool IsDone { get; set; } 

    [Column("Active")] 
    public bool _destroy { get; set; } 
} 

回答

4

的問題是,實體框架不允許實體屬性的名稱開始與下劃線字符(其它字符類之間)。使用反射器,我能夠追查用來驗證屬性名正則表達式,它是:

@"[\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}\p{Nl}][\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\p{Cf}]{0,}" 

這意味着實體屬性的名稱可以從以下Unicode字符類取字符纔開始:

LL,路,LT,螺,LM,NL

在屬性名稱的剩餘字符可以包括那些類,以及以下:

錳,MC,釹,PC,CF

下劃線字符(U + 005F)位於Pc類中。您可以通過重命名_destroy屬性來消除錯誤,比如說銷燬。你可以找到一個字符類參考here