代码之家  ›  专栏  ›  技术社区  ›  Naveed

实体框架:实体名称中的无效字符列表

  •  0
  • Naveed  · 技术社区  · 12 年前

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

    1 回复  |  直到 12 年前
        1
  •  0
  •   Pawel    12 年前

    看看xsd。当加载工件(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>
    

    如果您不想使用xsd,并且希望利用内部验证,那么您可以将xml加载到相应的项集合中。同样,在EF6中添加了一些重载,允许您加载工件,但如果它们无效,则不会引发异常,但会返回null和错误列表作为out参数(在项集合上查找公共静态工厂方法)。