當您嘗試命名的實體框架設計一個名稱的屬性以下劃線,你會得到以下錯誤:Navigation Name '_PropertyName' is not valid.
爲什麼開始與實體框架不允許下劃線的屬性?
參見:https://stackoverflow.com/a/10854740/647845
爲什麼加入這個限制?對我來說,這感覺很隨意。
當您嘗試命名的實體框架設計一個名稱的屬性以下劃線,你會得到以下錯誤:Navigation Name '_PropertyName' is not valid.
爲什麼開始與實體框架不允許下劃線的屬性?
參見:https://stackoverflow.com/a/10854740/647845
爲什麼加入這個限制?對我來說,這感覺很隨意。
的EF源代碼可用(http://entityframework.codeplex.com/),這樣我們就可以直接來看看,沒必要依靠某種形式的反編譯的。
一種正則表達式搜索顯示了這個:
// Replace anything that doesn't adhere to the ECMA specification for identifiers with an underscore,
// unless it's the first which the schema definition says must be a letter...
// System.Data.Resource.CSMSL_2.xsd - [\p{L}\p{Nl}][\p{L}\p{Nl}\p{Nd}\p{Mn}\p{Mc}\p{Pc}\p{Cf}]{0,}
在
src/EFTools/EntityDesignModel/ModelHelper.cs
。
尋找該模式文件:無法找到,但將其更改爲System.Data.Resources.CSMSL_2.xsd
顯示了三個文件:一個在setup
,一個在test
,我會認爲是第三份:src/EntityFramework/Resources/System/Data/MappingSpecification/System.Data.Resources.CSMSL_2.xsd
。
這確實使用相同的正則表達式作爲對TSimpleIdentifier
類型的約束。
因此,要回答你的問題:
Why is this limitation added? It feels rather arbitrary to me.
因爲這是對底層EF型號的限制規定。瞭解爲什麼您需要在開始時詢問設計EF的人員。
是的,這是任意。但是,所有的標識符命名規則都是任意的。例如。
<
和>
字符對於CLR的運行時是沒問題的。