【问题标题】:Entity Framework: List of invalid characters in Entity Name实体框架:实体名称中的无效字符列表
【发布时间】:2013-03-27 17:13:38
【问题描述】:
我正在开发一个与 Visual Studio 中的 Edmx 设计器非常相似的设计器。我想添加 Edmx 设计器应用于实体和属性名称的相同验证。有人可以分享什么是验证规则,即允许哪些字符,哪些不允许。实体/属性名称和其他此类规则的长度可能是多少?
【问题讨论】:
标签:
entity-framework
edmx
【解决方案1】:
查看 xsds。加载工件 (CSDL/MSL/SSDL) 时有两步验证 1 - 使用 xsd,2 内部验证检查在大多数情况下无法在 xsd 中表达的附加规则。
EF6 现在是开源的,但以前版本的 xsd 架构没有改变。你可以找到他们here。 (映射架构在 MappingSpecification 文件夹中)。
如果您查看 v3 CSDL 架构,则属性名称指定如下:
<xs:simpleType name="TSimpleIdentifier">
<xs:restriction base="xs:string">
<xs:maxLength value="480" />
<!-- The below pattern represents the allowed identifiers in ECMA specification -->
<xs:pattern value="[\p{L}\p{Nl}][\p{L}\p{Nl}\p{Nd}\p{Mn}\p{Mc}\p{Pc}\p{Cf}]{0,}" />
</xs:restriction>
</xs:simpleType>
如果您不想打扰 xsds 并想利用内部验证,您可以将您的 xml 加载到相应的项目集合中。同样在 EF6 中添加了一些重载,允许您加载工件,但如果它们无效则不会引发异常,但会返回 null 和错误列表作为输出参数(在项目集合上查找公共静态工厂方法)。