2013-03-27 145 views
0

我正在設計一個與Visual Studio中的Edmx設計器非常相似的設計器。我想添加與Edmx設計人員適用於實體和屬性名稱相同的驗證。有人可以分享什麼是驗證規則,即允許什麼字符,哪些不允許。 Entity/Property名稱和其他這樣的規則的長度可能是多少?實體框架:實體名稱中的無效字符列表

+0

如果你使用C#,也許這可以幫助http://stackoverflow.com/questions/950616/what-c​​haracters-are-allowed-in-c-sharp-class-name – SteveW 2013-03-27 18:55:09

回答

0

看看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> 

如果你不想用的XSD打擾,想採取內部驗證即可優勢只需將您的xml加載到相應的項目集合即可。再次在EF6中已經添加了一些重載,允許載入工件,但如果它們無效但不會拋出異常,但會返回null和錯誤列表作爲out參數(在項目集合中查找公共靜態工廠方法)。

+0

謝謝帕維爾。這真的有幫助! – Naveed 2013-04-13 04:43:46