diff --git a/EdmGenModelGen.cs b/EdmGenModelGen.cs index 47550cb..d980b73 100644 --- a/EdmGenModelGen.cs +++ b/EdmGenModelGen.cs @@ -563,6 +563,18 @@ public void ModelGen2(String connectionString, String providerName, String typeP break; } + if (String.IsNullOrEmpty(nut.SsdlParameterMode(dbfp))) { + ssdlFunction.AddAfterSelf(new XComment(String.Format("Function {0} removed. Unknown SsdlParameterMode {1}" + , ssdlFunction.Attribute("Name") + , nut.SsdlParameterMode(dbfp)) + )); + + ssdlFunction.Remove(); + csdlFunctionImport.Remove(); + mslFunctionImportMapping.Remove(); + break; + } + var ssdlParameter = new XElement(xSSDL + "Parameter" , new XAttribute("Name", nut.SsdlParameterName(dbfp)) , new XAttribute("Mode", nut.SsdlParameterMode(dbfp)) @@ -584,6 +596,18 @@ public void ModelGen2(String connectionString, String providerName, String typeP break; } + if (String.IsNullOrEmpty(nut.CsdlParameterMode(dbfp))) { + ssdlFunction.AddAfterSelf(new XComment(String.Format("Function {0} removed. Unknown ParameterMode {1}" + , ssdlFunction.Attribute("Name") + , nut.CsdlParameterMode(dbfp)) + )); + + ssdlFunction.Remove(); + csdlFunctionImport.Remove(); + mslFunctionImportMapping.Remove(); + break; + } + var csdlParameter = new XElement(xCSDL + "Parameter" , new XAttribute("Name", nut.CsdlParameterName(dbfp)) , new XAttribute("Mode", nut.CsdlParameterMode(dbfp)) @@ -861,12 +885,30 @@ public String SsdlFunctionRef(Routine dbf) { return String.Format("{0}.{1}", SsdlNs(), dbf.Name); } + SortedDictionary dictSsdlParameterName = new SortedDictionary(); + public String SsdlParameterName(Parameter dbfp) { - return String.Format("{0}", dbfp.Name); + for (int x = 0; ; x++) { + String a = String.Format("{0}{1}", dbfp.Name, (x == 0) ? "" : "" + x); + String k = dbfp.Routine.CatalogName + ":" + dbfp.Routine.Id + ":" + a; + if (dictSsdlParameterName.ContainsKey(k)) continue; + + dictSsdlParameterName[k] = true; + return a; + } } + SortedDictionary dictCsdlParameterName = new SortedDictionary(); + public String CsdlParameterName(Parameter dbfp) { - return String.Format("{0}", dbfp.Name); + for (int x = 0; ; x++) { + String a = String.Format("{0}{1}", dbfp.Name, (x == 0) ? "" : "" + x); + String k = dbfp.Routine.CatalogName + ":" + dbfp.Routine.Id + ":" + a; + if (dictCsdlParameterName.ContainsKey(k)) continue; + + dictCsdlParameterName[k] = true; + return a; + } } public String SsdlParameterMode(Parameter dbfp) {