0

我正在开发一个与 Visual Studio 中的 Edmx 设计器非常相似的设计器。我想添加 Edmx 设计器应用于实体和属性名称的相同验证。有人可以分享什么是验证规则,即允许哪些字符,不允许哪些字符。实体/属性名称和其他此类规则的长度可能是多少?

4

1 回答 1

0

看看xsd。加载工件 (CSDL/MSL/SSDL) 时有两步验证 1 - 使用 xsd,2 内部验证检查在大多数情况下无法在 xsd 中表达的附加规则。EF6 现在是开源的,但以前版本的 xsd 架构没有改变。你可以在这里找到它们。(映射模式位于 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 和错误列表作为输出参数(在项目集合上查找公共静态工厂方法)。

于 2013-03-27T20:00:19.323 回答