当您尝试将Entity Framework设计器中的属性命名为带有下划线的名称时,您将收到以下错误:Navigation Name '_PropertyName' is not valid.
请参阅:https://stackoverflow.com/a/10854740/647845
为什么会增加此限制?对我来说这感觉很随意。
答案 0 :(得分:2)
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,}
<{3>}中的。
查找该架构文件:无法找到,但将其更改为System.Data.Resources.CSMSL_2.xsd
会显示三个文件:setup
中的一个文件和test
中的一个文件,我将假设它们是第三:src/EFTools/EntityDesignModel/ModelHelper.cs
。
这确实使用相同的正则表达式作为TSimpleIdentifier
类型的约束。
因此,回答你的问题:
为什么会增加此限制?对我来说这感觉很随意。
因为这是对基础EF模型施加的限制。要理解为什么你需要在开始时询问那些设计EF的人。
是的,是是任意的。但是,所有标识符命名规则都是仲裁的。例如
<
和>
字符适用于CLR的运行时