From 314c7e0aa6ece6172a939e888e06ad5f294e9a39 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Fri, 2 Dec 2011 19:47:28 +0000 Subject: [PATCH] Detect id properties as primary keys when they are prefixed with the class name. --- .../CodeTemplates/AddView/AspxCSharp/Create.cs | 13 +++++++++++++ .../CodeTemplates/AddView/AspxCSharp/Create.tt | 13 +++++++++++++ .../CodeTemplates/AddView/AspxCSharp/Delete.cs | 13 +++++++++++++ .../CodeTemplates/AddView/AspxCSharp/Delete.tt | 13 +++++++++++++ .../CodeTemplates/AddView/AspxCSharp/Details.cs | 13 +++++++++++++ .../CodeTemplates/AddView/AspxCSharp/Details.tt | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/AspxCSharp/Edit.cs | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/AspxCSharp/Edit.tt | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/AspxCSharp/List.cs | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/AspxCSharp/List.tt | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/CSHTML/Create.cs | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/CSHTML/Create.tt | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/CSHTML/Delete.cs | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/CSHTML/Delete.tt | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/CSHTML/Details.cs | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/CSHTML/Details.tt | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/CSHTML/Edit.cs | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/CSHTML/Edit.tt | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/CSHTML/List.cs | 13 +++++++++++++ .../CSharp/CodeTemplates/AddView/CSHTML/List.tt | 13 +++++++++++++ .../CodeTemplates/AddView/AspxVisualBasic/Create.tt | 10 ++++++++++ .../CodeTemplates/AddView/AspxVisualBasic/Delete.tt | 10 ++++++++++ .../AddView/AspxVisualBasic/Details.tt | 10 ++++++++++ .../CodeTemplates/AddView/AspxVisualBasic/Edit.tt | 10 ++++++++++ .../CodeTemplates/AddView/AspxVisualBasic/List.tt | 10 ++++++++++ .../CodeTemplates/AddView/VBHTML/Create.tt | 10 ++++++++++ .../CodeTemplates/AddView/VBHTML/Delete.tt | 10 ++++++++++ .../CodeTemplates/AddView/VBHTML/Details.tt | 10 ++++++++++ .../CodeTemplates/AddView/VBHTML/Edit.tt | 10 ++++++++++ .../CodeTemplates/AddView/VBHTML/List.tt | 10 ++++++++++ .../AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj | 1 + .../AspxCSharpCreateViewTemplateTests.cs | 13 ++++++++++++- .../AspxCSharpDeleteViewTemplateTests.cs | 13 ++++++++++++- .../AspxCSharpDetailsViewTemplateTests.cs | 11 +++++++++++ .../AspxCSharpEditViewTemplateTests.cs | 11 +++++++++++ .../AspxCSharpListViewTemplateTests.cs | 11 +++++++++++ .../ModelWithPrefixedIdPropertyInLowerCase.cs | 12 ++++++++++++ .../RazorCSharpCreateViewTemplateTests.cs | 13 ++++++++++++- .../RazorCSharpDeleteViewTemplateTests.cs | 13 ++++++++++++- .../RazorCSharpDetailsViewTemplateTests.cs | 11 +++++++++++ .../RazorCSharpEditViewTemplateTests.cs | 11 +++++++++++ .../RazorCSharpListViewTemplateTests.cs | 11 +++++++++++ 42 files changed, 487 insertions(+), 4 deletions(-) create mode 100644 src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/Models/ModelWithPrefixedIdPropertyInLowerCase.cs diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Create.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Create.cs index 276f0b9a66..52987a70a0 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Create.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Create.cs @@ -38,10 +38,23 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp { } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Create.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Create.tt index 9ba4dde3fb..3adf2236bb 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Create.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Create.tt @@ -89,10 +89,23 @@ } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Delete.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Delete.cs index 8e3564b17c..f6af581755 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Delete.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Delete.cs @@ -38,10 +38,23 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp { } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Delete.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Delete.tt index 123fcc6518..a6fd013b08 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Delete.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Delete.tt @@ -84,10 +84,23 @@ } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Details.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Details.cs index 6d3f0a9bdf..039a2b4b91 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Details.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Details.cs @@ -38,10 +38,23 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp { } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Details.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Details.tt index 0293b32d14..0d066438ba 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Details.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Details.tt @@ -86,10 +86,23 @@ } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Edit.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Edit.cs index 9a791bba42..a959723482 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Edit.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Edit.cs @@ -38,10 +38,23 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp { } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Edit.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Edit.tt index 6987c09a5e..89aab0156d 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Edit.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Edit.tt @@ -93,10 +93,23 @@ } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.cs index db4dcaf210..6c5542fe53 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.cs @@ -38,10 +38,23 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp { } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.tt index 11c004470d..76a04b8112 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.tt @@ -114,10 +114,23 @@ } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Create.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Create.cs index 896f6d65cc..dff08e93ff 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Create.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Create.cs @@ -38,10 +38,23 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml { } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Create.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Create.tt index 095e6ff4ed..b9956dea61 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Create.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Create.tt @@ -85,10 +85,23 @@ } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Delete.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Delete.cs index e5dd8481ff..7c522a4cc4 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Delete.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Delete.cs @@ -38,10 +38,23 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml { } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Delete.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Delete.tt index e68e440a68..0421f0174c 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Delete.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Delete.tt @@ -80,10 +80,23 @@ } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Details.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Details.cs index f2d43f5624..3995815bde 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Details.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Details.cs @@ -38,10 +38,23 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml { } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Details.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Details.tt index 5e9d4c68b6..d521eea3be 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Details.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Details.tt @@ -82,10 +82,23 @@ } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Edit.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Edit.cs index f0d2589692..53aed3afa7 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Edit.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Edit.cs @@ -38,10 +38,23 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml { } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Edit.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Edit.tt index 7b1dc1b1ac..c326081db8 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Edit.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Edit.tt @@ -89,10 +89,23 @@ } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.cs index 9caae3168d..5cec291ac8 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.cs @@ -38,10 +38,23 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml { } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.tt index 69cf769e8c..22797b8c66 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.tt @@ -110,10 +110,23 @@ } bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return + IsIdProperty(propertyInfo) || + IsIdPropertyPrefixedWithClassName(propertyInfo); + } + + bool IsIdProperty(PropertyInfo propertyInfo) { return IsMatchIgnoringCase(propertyInfo.Name, "id"); } + bool IsIdPropertyPrefixedWithClassName(PropertyInfo propertyInfo) + { + string prefixedIdPropertyName = propertyInfo.DeclaringType.Name + "id"; + return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName); + } + static bool IsMatchIgnoringCase(string a, string b) { return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Create.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Create.tt index 3b6dc899b2..1c946e45ef 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Create.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Create.tt @@ -90,9 +90,19 @@ End Sub Function IsPrimaryKeyProperty(ByVal propertyInfo As PropertyInfo) As Boolean + Return IsIdProperty(propertyInfo) Or _ + IsIdPropertyPrefixedWithClassName(propertyInfo) + End Function + + Function IsIdProperty(ByVal propertyInfo As PropertyInfo) As Boolean Return IsMatchIgnoringCase(propertyInfo.Name, "id") End Function + Function IsIdPropertyPrefixedWithClassName(ByVal propertyInfo As PropertyInfo) As Boolean + Dim prefixedIdPropertyName As String = propertyInfo.DeclaringType.Name + "id" + Return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName) + End Function + Shared Function IsMatchIgnoringCase(ByVal a As String, ByVal b as String) As Boolean Return String.Equals(a, b, StringComparison.OrdinalIgnoreCase) End Function diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Delete.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Delete.tt index b9eb5342ad..c4f23558d0 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Delete.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Delete.tt @@ -85,9 +85,19 @@ End Sub Function IsPrimaryKeyProperty(ByVal propertyInfo As PropertyInfo) As Boolean + Return IsIdProperty(propertyInfo) Or _ + IsIdPropertyPrefixedWithClassName(propertyInfo) + End Function + + Function IsIdProperty(ByVal propertyInfo As PropertyInfo) As Boolean Return IsMatchIgnoringCase(propertyInfo.Name, "id") End Function + Function IsIdPropertyPrefixedWithClassName(ByVal propertyInfo As PropertyInfo) As Boolean + Dim prefixedIdPropertyName As String = propertyInfo.DeclaringType.Name + "id" + Return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName) + End Function + Shared Function IsMatchIgnoringCase(ByVal a As String, ByVal b as String) As Boolean Return String.Equals(a, b, StringComparison.OrdinalIgnoreCase) End Function diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Details.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Details.tt index b8bd64da31..1fc9f34a6f 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Details.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Details.tt @@ -87,9 +87,19 @@ End Sub Function IsPrimaryKeyProperty(ByVal propertyInfo As PropertyInfo) As Boolean + Return IsIdProperty(propertyInfo) Or _ + IsIdPropertyPrefixedWithClassName(propertyInfo) + End Function + + Function IsIdProperty(ByVal propertyInfo As PropertyInfo) As Boolean Return IsMatchIgnoringCase(propertyInfo.Name, "id") End Function + Function IsIdPropertyPrefixedWithClassName(ByVal propertyInfo As PropertyInfo) As Boolean + Dim prefixedIdPropertyName As String = propertyInfo.DeclaringType.Name + "id" + Return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName) + End Function + Shared Function IsMatchIgnoringCase(ByVal a As String, ByVal b as String) As Boolean Return String.Equals(a, b, StringComparison.OrdinalIgnoreCase) End Function diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Edit.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Edit.tt index 302e05c09d..3cba553098 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Edit.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Edit.tt @@ -94,9 +94,19 @@ End Sub Function IsPrimaryKeyProperty(ByVal propertyInfo As PropertyInfo) As Boolean + Return IsIdProperty(propertyInfo) Or _ + IsIdPropertyPrefixedWithClassName(propertyInfo) + End Function + + Function IsIdProperty(ByVal propertyInfo As PropertyInfo) As Boolean Return IsMatchIgnoringCase(propertyInfo.Name, "id") End Function + Function IsIdPropertyPrefixedWithClassName(ByVal propertyInfo As PropertyInfo) As Boolean + Dim prefixedIdPropertyName As String = propertyInfo.DeclaringType.Name + "id" + Return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName) + End Function + Shared Function IsMatchIgnoringCase(ByVal a As String, ByVal b as String) As Boolean Return String.Equals(a, b, StringComparison.OrdinalIgnoreCase) End Function diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/List.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/List.tt index 330fe729c6..fbcf8941f7 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/List.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/List.tt @@ -115,9 +115,19 @@ End Sub Function IsPrimaryKeyProperty(ByVal propertyInfo As PropertyInfo) As Boolean + Return IsIdProperty(propertyInfo) Or _ + IsIdPropertyPrefixedWithClassName(propertyInfo) + End Function + + Function IsIdProperty(ByVal propertyInfo As PropertyInfo) As Boolean Return IsMatchIgnoringCase(propertyInfo.Name, "id") End Function + Function IsIdPropertyPrefixedWithClassName(ByVal propertyInfo As PropertyInfo) As Boolean + Dim prefixedIdPropertyName As String = propertyInfo.DeclaringType.Name + "id" + Return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName) + End Function + Shared Function IsMatchIgnoringCase(ByVal a As String, ByVal b as String) As Boolean Return String.Equals(a, b, StringComparison.OrdinalIgnoreCase) End Function diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Create.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Create.tt index ab0a4ec44b..f6e102ac07 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Create.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Create.tt @@ -86,9 +86,19 @@ End Using End Sub Function IsPrimaryKeyProperty(ByVal propertyInfo As PropertyInfo) As Boolean + Return IsIdProperty(propertyInfo) Or _ + IsIdPropertyPrefixedWithClassName(propertyInfo) + End Function + + Function IsIdProperty(ByVal propertyInfo As PropertyInfo) As Boolean Return IsMatchIgnoringCase(propertyInfo.Name, "id") End Function + Function IsIdPropertyPrefixedWithClassName(ByVal propertyInfo As PropertyInfo) As Boolean + Dim prefixedIdPropertyName As String = propertyInfo.DeclaringType.Name + "id" + Return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName) + End Function + Shared Function IsMatchIgnoringCase(ByVal a As String, ByVal b as String) As Boolean Return String.Equals(a, b, StringComparison.OrdinalIgnoreCase) End Function diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Delete.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Delete.tt index d7fe24970f..2bfac2bf1f 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Delete.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Delete.tt @@ -81,9 +81,19 @@ End Using End Sub Function IsPrimaryKeyProperty(ByVal propertyInfo As PropertyInfo) As Boolean + Return IsIdProperty(propertyInfo) Or _ + IsIdPropertyPrefixedWithClassName(propertyInfo) + End Function + + Function IsIdProperty(ByVal propertyInfo As PropertyInfo) As Boolean Return IsMatchIgnoringCase(propertyInfo.Name, "id") End Function + Function IsIdPropertyPrefixedWithClassName(ByVal propertyInfo As PropertyInfo) As Boolean + Dim prefixedIdPropertyName As String = propertyInfo.DeclaringType.Name + "id" + Return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName) + End Function + Shared Function IsMatchIgnoringCase(ByVal a As String, ByVal b as String) As Boolean Return String.Equals(a, b, StringComparison.OrdinalIgnoreCase) End Function diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Details.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Details.tt index e1ef1f6fb1..37f02ffe56 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Details.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Details.tt @@ -83,9 +83,19 @@ End Code End Sub Function IsPrimaryKeyProperty(ByVal propertyInfo As PropertyInfo) As Boolean + Return IsIdProperty(propertyInfo) Or _ + IsIdPropertyPrefixedWithClassName(propertyInfo) + End Function + + Function IsIdProperty(ByVal propertyInfo As PropertyInfo) As Boolean Return IsMatchIgnoringCase(propertyInfo.Name, "id") End Function + Function IsIdPropertyPrefixedWithClassName(ByVal propertyInfo As PropertyInfo) As Boolean + Dim prefixedIdPropertyName As String = propertyInfo.DeclaringType.Name + "id" + Return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName) + End Function + Shared Function IsMatchIgnoringCase(ByVal a As String, ByVal b as String) As Boolean Return String.Equals(a, b, StringComparison.OrdinalIgnoreCase) End Function diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Edit.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Edit.tt index 42952dc5ee..245922a5d4 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Edit.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Edit.tt @@ -90,9 +90,19 @@ End Using End Sub Function IsPrimaryKeyProperty(ByVal propertyInfo As PropertyInfo) As Boolean + Return IsIdProperty(propertyInfo) Or _ + IsIdPropertyPrefixedWithClassName(propertyInfo) + End Function + + Function IsIdProperty(ByVal propertyInfo As PropertyInfo) As Boolean Return IsMatchIgnoringCase(propertyInfo.Name, "id") End Function + Function IsIdPropertyPrefixedWithClassName(ByVal propertyInfo As PropertyInfo) As Boolean + Dim prefixedIdPropertyName As String = propertyInfo.DeclaringType.Name + "id" + Return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName) + End Function + Shared Function IsMatchIgnoringCase(ByVal a As String, ByVal b as String) As Boolean Return String.Equals(a, b, StringComparison.OrdinalIgnoreCase) End Function diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/List.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/List.tt index 02c5226dbd..4049799e4d 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/List.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/List.tt @@ -111,9 +111,19 @@ Next End Sub Function IsPrimaryKeyProperty(ByVal propertyInfo As PropertyInfo) As Boolean + Return IsIdProperty(propertyInfo) Or _ + IsIdPropertyPrefixedWithClassName(propertyInfo) + End Function + + Function IsIdProperty(ByVal propertyInfo As PropertyInfo) As Boolean Return IsMatchIgnoringCase(propertyInfo.Name, "id") End Function + Function IsIdPropertyPrefixedWithClassName(ByVal propertyInfo As PropertyInfo) As Boolean + Dim prefixedIdPropertyName As String = propertyInfo.DeclaringType.Name + "id" + Return IsMatchIgnoringCase(propertyInfo.Name, prefixedIdPropertyName) + End Function + Shared Function IsMatchIgnoringCase(ByVal a As String, ByVal b as String) As Boolean Return String.Equals(a, b, StringComparison.OrdinalIgnoreCase) End Function diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj b/src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj index 5dea32dbe8..a7f03462ac 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj @@ -95,6 +95,7 @@ + diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpCreateViewTemplateTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpCreateViewTemplateTests.cs index f96530741c..384b6fe880 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpCreateViewTemplateTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpCreateViewTemplateTests.cs @@ -37,7 +37,7 @@ namespace AspNet.Mvc.Tests.CodeTemplates Create.ModelProperty GetModelProperty(string name) { - return GetModelProperties().Single(p => p.Name == name); + return GetModelProperties().First(p => p.Name == name); } [Test] @@ -355,5 +355,16 @@ MyView Assert.IsTrue(modelProperty.IsPrimaryKey); } + + [Test] + public void GetModelProperties_ModelHasPrefixedIdPropertyInLowerCase_PrefixedIdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithPrefixedIdPropertyInLowerCase); + + Create.ModelProperty modelProperty = GetModelProperty("modelwithprefixedidpropertyinlowercaseid"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } } } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpDeleteViewTemplateTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpDeleteViewTemplateTests.cs index 5469f1fc8d..f843d6d648 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpDeleteViewTemplateTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpDeleteViewTemplateTests.cs @@ -37,7 +37,7 @@ namespace AspNet.Mvc.Tests.CodeTemplates Delete.ModelProperty GetModelProperty(string name) { - return GetModelProperties().Single(p => p.Name == name); + return GetModelProperties().First(p => p.Name == name); } [Test] @@ -327,5 +327,16 @@ MyView Assert.IsTrue(modelProperty.IsPrimaryKey); } + + [Test] + public void GetModelProperties_ModelHasPrefixedIdPropertyInLowerCase_PrefixedIdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithPrefixedIdPropertyInLowerCase); + + Delete.ModelProperty modelProperty = GetModelProperty("modelwithprefixedidpropertyinlowercaseid"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } } } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpDetailsViewTemplateTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpDetailsViewTemplateTests.cs index 393cf4fe6e..51d1f4e86f 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpDetailsViewTemplateTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpDetailsViewTemplateTests.cs @@ -348,5 +348,16 @@ MyView Assert.AreEqual(String.Empty, primaryKeyName); } + + [Test] + public void GetModelProperties_ModelHasPrefixedIdPropertyInLowerCase_PrefixedIdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithPrefixedIdPropertyInLowerCase); + + Details.ModelProperty modelProperty = GetModelProperty("modelwithprefixedidpropertyinlowercaseid"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } } } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpEditViewTemplateTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpEditViewTemplateTests.cs index b69fa47e0b..256bd66969 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpEditViewTemplateTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpEditViewTemplateTests.cs @@ -390,5 +390,16 @@ MyView Assert.AreEqual(String.Empty, primaryKeyName); } + + [Test] + public void GetModelProperties_ModelHasPrefixedIdPropertyInLowerCase_PrefixedIdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithPrefixedIdPropertyInLowerCase); + + Edit.ModelProperty modelProperty = GetModelProperty("modelwithprefixedidpropertyinlowercaseid"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } } } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpListViewTemplateTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpListViewTemplateTests.cs index 79c4b05e8c..ced31c9f5c 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpListViewTemplateTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpListViewTemplateTests.cs @@ -398,5 +398,16 @@ MyView Assert.AreEqual(String.Empty, primaryKeyName); } + + [Test] + public void GetModelProperties_ModelHasPrefixedIdPropertyInLowerCase_PrefixedIdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithPrefixedIdPropertyInLowerCase); + + AspxCSharp.List.ModelProperty modelProperty = GetModelProperty("modelwithprefixedidpropertyinlowercaseid"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } } } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/Models/ModelWithPrefixedIdPropertyInLowerCase.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/Models/ModelWithPrefixedIdPropertyInLowerCase.cs new file mode 100644 index 0000000000..03224fd2b7 --- /dev/null +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/Models/ModelWithPrefixedIdPropertyInLowerCase.cs @@ -0,0 +1,12 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; + +namespace AspNet.Mvc.Tests.CodeTemplates.Models +{ + public class ModelWithPrefixedIdPropertyInLowerCase + { + public int modelwithprefixedidpropertyinlowercaseid { get; set; } + } +} diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpCreateViewTemplateTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpCreateViewTemplateTests.cs index 8237d0e3d6..c731ab8c56 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpCreateViewTemplateTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpCreateViewTemplateTests.cs @@ -37,7 +37,7 @@ namespace AspNet.Mvc.Tests.CodeTemplates Create.ModelProperty GetModelProperty(string name) { - return GetModelProperties().Single(p => p.Name == name); + return GetModelProperties().First(p => p.Name == name); } [Test] @@ -356,5 +356,16 @@ namespace AspNet.Mvc.Tests.CodeTemplates Assert.IsTrue(modelProperty.IsPrimaryKey); } + + [Test] + public void GetModelProperties_ModelHasPrefixedIdPropertyInLowerCase_PrefixedIdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithPrefixedIdPropertyInLowerCase); + + Create.ModelProperty modelProperty = GetModelProperty("modelwithprefixedidpropertyinlowercaseid"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } } } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpDeleteViewTemplateTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpDeleteViewTemplateTests.cs index dde8d16c47..b9fbd39d34 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpDeleteViewTemplateTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpDeleteViewTemplateTests.cs @@ -37,7 +37,7 @@ namespace AspNet.Mvc.Tests.CodeTemplates Delete.ModelProperty GetModelProperty(string name) { - return GetModelProperties().Single(p => p.Name == name); + return GetModelProperties().First(p => p.Name == name); } [Test] @@ -328,5 +328,16 @@ namespace AspNet.Mvc.Tests.CodeTemplates Assert.IsTrue(modelProperty.IsPrimaryKey); } + + [Test] + public void GetModelProperties_ModelHasPrefixedIdPropertyInLowerCase_PrefixedIdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithPrefixedIdPropertyInLowerCase); + + Delete.ModelProperty modelProperty = GetModelProperty("modelwithprefixedidpropertyinlowercaseid"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } } } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpDetailsViewTemplateTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpDetailsViewTemplateTests.cs index 54a2f4c510..4e4ef26b66 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpDetailsViewTemplateTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpDetailsViewTemplateTests.cs @@ -349,5 +349,16 @@ namespace AspNet.Mvc.Tests.CodeTemplates Assert.AreEqual(String.Empty, primaryKeyName); } + + [Test] + public void GetModelProperties_ModelHasPrefixedIdPropertyInLowerCase_PrefixedIdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithPrefixedIdPropertyInLowerCase); + + Details.ModelProperty modelProperty = GetModelProperty("modelwithprefixedidpropertyinlowercaseid"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } } } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpEditViewTemplateTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpEditViewTemplateTests.cs index e6d4757a6f..65bd5caa71 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpEditViewTemplateTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpEditViewTemplateTests.cs @@ -391,5 +391,16 @@ namespace AspNet.Mvc.Tests.CodeTemplates Assert.AreEqual(String.Empty, primaryKeyName); } + + [Test] + public void GetModelProperties_ModelHasPrefixedIdPropertyInLowerCase_PrefixedIdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithPrefixedIdPropertyInLowerCase); + + Edit.ModelProperty modelProperty = GetModelProperty("modelwithprefixedidpropertyinlowercaseid"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } } } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpListViewTemplateTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpListViewTemplateTests.cs index 152f9fa97e..0beaeb574b 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpListViewTemplateTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpListViewTemplateTests.cs @@ -399,5 +399,16 @@ namespace AspNet.Mvc.Tests.CodeTemplates Assert.AreEqual(String.Empty, primaryKeyName); } + + [Test] + public void GetModelProperties_ModelHasPrefixedIdPropertyInLowerCase_PrefixedIdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithPrefixedIdPropertyInLowerCase); + + CSHtml.List.ModelProperty modelProperty = GetModelProperty("modelwithprefixedidpropertyinlowercaseid"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } } }