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 146b31723a..9a791bba42 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 @@ -20,7 +20,7 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp { private global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost hostValue; - #line 69 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + #line 79 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" MvcTextTemplateHost MvcHost { get { return (MvcTextTemplateHost)Host; } @@ -29,6 +29,23 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp { public class ModelProperty { public string Name { get; set; } + public bool IsPrimaryKey { get; set; } + + public ModelProperty(PropertyInfo propertyInfo) + { + this.Name = propertyInfo.Name; + this.IsPrimaryKey = IsPrimaryKeyProperty(propertyInfo); + } + + bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return IsMatchIgnoringCase(propertyInfo.Name, "id"); + } + + static bool IsMatchIgnoringCase(string a, string b) + { + return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); + } } public string GetViewPageType() @@ -40,18 +57,49 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp { return String.Empty; } + List modelProperties; + + List ModelProperties { + get { + if (modelProperties == null) { + modelProperties = new List(GetModelProperties()); + } + return modelProperties; + } + } + public IEnumerable GetModelProperties() { var properties = new List(); foreach (PropertyInfo propertyInfo in MvcHost.GetViewDataTypeProperties()) { - properties.Add(CreateModelProperty(propertyInfo)); + properties.Add(new ModelProperty(propertyInfo)); } return properties; } - ModelProperty CreateModelProperty(PropertyInfo propertyInfo) + bool ModelHasPrimaryKey { + get { return ModelPrimaryKeyName.Length > 0; } + } + + string modelPrimaryKeyName; + + string ModelPrimaryKeyName { + get { + if (modelPrimaryKeyName == null) { + modelPrimaryKeyName = GetModelPrimaryKeyName(); + } + return modelPrimaryKeyName; + } + } + + public string GetModelPrimaryKeyName() { - return new ModelProperty() { Name = propertyInfo.Name }; + foreach (ModelProperty modelProperty in ModelProperties) { + if (modelProperty.IsPrimaryKey) { + return modelProperty.Name; + } + } + return ""; } #line default @@ -223,68 +271,92 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp { #line hidden #line 36 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" - foreach (ModelProperty modelProperty in GetModelProperties()) { + if (ModelHasPrimaryKey) { #line default #line hidden #line 37 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" - this.Write("\t\t\r\n\t\t
\r\n\t\t\t<%: Html.LabelFor(model => model."); + this.Write("\t\t\r\n\t\t<%: Html.HiddenFor(model => model.Id) %>\r\n"); #line default #line hidden #line 39 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" - this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name)); + } #line default #line hidden - #line 39 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + #line 40 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + + foreach (ModelProperty modelProperty in ModelProperties) { + if (!modelProperty.IsPrimaryKey) { + + + #line default + #line hidden + + #line 44 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + this.Write("\t\t\r\n\t\t
\r\n\t\t\t<%: Html.LabelFor(model => model."); + + #line default + #line hidden + + #line 46 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name )); + + #line default + #line hidden + + #line 46 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" this.Write(") %>\r\n\t\t
\r\n\t\t
\r\n\t\t\t<%: Html.EditorFor(model => mode" + "l."); #line default #line hidden - #line 42 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" - this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name)); + #line 49 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name )); #line default #line hidden - #line 42 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + #line 49 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" this.Write(") %>\r\n\t\t\t<%: Html.ValidationMessageFor(model => model."); #line default #line hidden - #line 43 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" - this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name)); + #line 50 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name )); #line default #line hidden - #line 43 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + #line 50 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" this.Write(") %>\r\n\t\t
\r\n"); #line default #line hidden - #line 45 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" - } + #line 52 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + + } + } + #line default #line hidden - #line 46 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + #line 56 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" this.Write("\t\t\r\n\t\t

\r\n\t\t\t\r\n\t\t

\r\n\t\r\n<% } %>\r" + "\n
\r\n\t<%: Html.ActionLink(\"Back\", \"Index\") %>\r\n
\r\n"); #line default #line hidden - #line 55 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + #line 65 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" if (MvcHost.IsPartialView) { // Do nothing. @@ -295,13 +367,13 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp { #line default #line hidden - #line 61 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + #line 71 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" this.Write("\r\n"); #line default #line hidden - #line 62 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + #line 72 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" } else { PopIndent(); @@ -310,13 +382,13 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp { #line default #line hidden - #line 66 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + #line 76 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" this.Write("\t\r\n\r\n"); #line default #line hidden - #line 68 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" + #line 78 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" } #line default 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 c2a4066c79..6987c09a5e 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 @@ -33,16 +33,26 @@ <%: Html.ValidationSummary(true) %>
<#= MvcHost.ViewDataType.Name #> -<# foreach (ModelProperty modelProperty in GetModelProperties()) { #> +<# if (ModelHasPrimaryKey) { #> + + <%: Html.HiddenFor(model => model.Id) %> +<# } #> +<# + foreach (ModelProperty modelProperty in ModelProperties) { + if (!modelProperty.IsPrimaryKey) { +#>
- <%: Html.LabelFor(model => model.<#= modelProperty.Name#>) %> + <%: Html.LabelFor(model => model.<#= modelProperty.Name #>) %>
- <%: Html.EditorFor(model => model.<#= modelProperty.Name#>) %> - <%: Html.ValidationMessageFor(model => model.<#= modelProperty.Name#>) %> + <%: Html.EditorFor(model => model.<#= modelProperty.Name #>) %> + <%: Html.ValidationMessageFor(model => model.<#= modelProperty.Name #>) %>
-<# } #> +<# + } + } +#>

@@ -74,6 +84,23 @@ public class ModelProperty { public string Name { get; set; } + public bool IsPrimaryKey { get; set; } + + public ModelProperty(PropertyInfo propertyInfo) + { + this.Name = propertyInfo.Name; + this.IsPrimaryKey = IsPrimaryKeyProperty(propertyInfo); + } + + bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return IsMatchIgnoringCase(propertyInfo.Name, "id"); + } + + static bool IsMatchIgnoringCase(string a, string b) + { + return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); + } } public string GetViewPageType() @@ -85,17 +112,48 @@ return String.Empty; } + List modelProperties; + + List ModelProperties { + get { + if (modelProperties == null) { + modelProperties = new List(GetModelProperties()); + } + return modelProperties; + } + } + public IEnumerable GetModelProperties() { var properties = new List(); foreach (PropertyInfo propertyInfo in MvcHost.GetViewDataTypeProperties()) { - properties.Add(CreateModelProperty(propertyInfo)); + properties.Add(new ModelProperty(propertyInfo)); } return properties; } - ModelProperty CreateModelProperty(PropertyInfo propertyInfo) + bool ModelHasPrimaryKey { + get { return ModelPrimaryKeyName.Length > 0; } + } + + string modelPrimaryKeyName; + + string ModelPrimaryKeyName { + get { + if (modelPrimaryKeyName == null) { + modelPrimaryKeyName = GetModelPrimaryKeyName(); + } + return modelPrimaryKeyName; + } + } + + public string GetModelPrimaryKeyName() { - return new ModelProperty() { Name = propertyInfo.Name }; + foreach (ModelProperty modelProperty in ModelProperties) { + if (modelProperty.IsPrimaryKey) { + return modelProperty.Name; + } + } + return ""; } #> \ No newline at end of file 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 2b0a62c877..f0d2589692 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 @@ -20,7 +20,7 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml { private global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost hostValue; - #line 65 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + #line 75 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" MvcTextTemplateHost MvcHost { get { return (MvcTextTemplateHost)Host; } @@ -29,6 +29,23 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml { public class ModelProperty { public string Name { get; set; } + public bool IsPrimaryKey { get; set; } + + public ModelProperty(PropertyInfo propertyInfo) + { + this.Name = propertyInfo.Name; + this.IsPrimaryKey = IsPrimaryKeyProperty(propertyInfo); + } + + bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return IsMatchIgnoringCase(propertyInfo.Name, "id"); + } + + static bool IsMatchIgnoringCase(string a, string b) + { + return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); + } } public string GetModelDirective() @@ -40,18 +57,49 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml { return String.Empty; } + List modelProperties; + + List ModelProperties { + get { + if (modelProperties == null) { + modelProperties = new List(GetModelProperties()); + } + return modelProperties; + } + } + public IEnumerable GetModelProperties() { var properties = new List(); foreach (PropertyInfo propertyInfo in MvcHost.GetViewDataTypeProperties()) { - properties.Add(CreateModelProperty(propertyInfo)); + properties.Add(new ModelProperty(propertyInfo)); } return properties; } - ModelProperty CreateModelProperty(PropertyInfo propertyInfo) + bool ModelHasPrimaryKey { + get { return ModelPrimaryKeyName.Length > 0; } + } + + string modelPrimaryKeyName; + + string ModelPrimaryKeyName { + get { + if (modelPrimaryKeyName == null) { + modelPrimaryKeyName = GetModelPrimaryKeyName(); + } + return modelPrimaryKeyName; + } + } + + public string GetModelPrimaryKeyName() { - return new ModelProperty() { Name = propertyInfo.Name }; + foreach (ModelProperty modelProperty in ModelProperties) { + if (modelProperty.IsPrimaryKey) { + return modelProperty.Name; + } + } + return ""; } #line default @@ -189,67 +237,103 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml { #line hidden #line 37 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" - foreach (ModelProperty modelProperty in GetModelProperties()) { + if (ModelHasPrimaryKey) { #line default #line hidden #line 38 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" - this.Write("\t\t\r\n\t\t

\r\n\t\t\t@Html.LabelFor(model => model."); + this.Write("\t\t\r\n\t\t@Html.HiddenFor(model => model."); + + #line default + #line hidden + + #line 39 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + this.Write(this.ToStringHelper.ToStringWithCulture( ModelPrimaryKeyName )); + + #line default + #line hidden + + #line 39 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + this.Write(")\r\n"); #line default #line hidden #line 40 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + } + + #line default + #line hidden + + #line 41 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + + foreach (ModelProperty modelProperty in ModelProperties) { + if (!modelProperty.IsPrimaryKey) { + + + #line default + #line hidden + + #line 45 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + this.Write("\t\t\r\n\t\t
\r\n\t\t\t@Html.LabelFor(model => model."); + + #line default + #line hidden + + #line 47 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name )); #line default #line hidden - #line 40 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + #line 47 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" this.Write(")\r\n\t\t
\r\n\t\t
\r\n\t\t\t@Html.EditorFor(model => model."); #line default #line hidden - #line 43 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + #line 50 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name )); #line default #line hidden - #line 43 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + #line 50 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" this.Write(")\r\n\t\t\t@Html.ValidationMessageFor(model => model."); #line default #line hidden - #line 44 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + #line 51 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name )); #line default #line hidden - #line 44 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + #line 51 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" this.Write(")\r\n\t\t
\r\n"); #line default #line hidden - #line 46 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" - } + #line 53 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + + } + } + #line default #line hidden - #line 47 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + #line 57 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" this.Write("\t\t\r\n\t\t

\r\n\t\t\t\r\n\t\t

\r\n\t
\r\n}\r\n
" + "\r\n\t@Html.ActionLink(\"Back\", \"Index\")\r\n
\r\n"); #line default #line hidden - #line 56 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + #line 66 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" if (MvcHost.IsPartialView) { // Do nothing. @@ -260,13 +344,13 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml { #line default #line hidden - #line 62 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + #line 72 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" this.Write("\t\r\n\r\n"); #line default #line hidden - #line 64 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" + #line 74 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" } #line default 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 5e1e6e06b0..7b1dc1b1ac 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 @@ -34,7 +34,14 @@ @Html.ValidationSummary(true)
<#= MvcHost.ViewDataType.Name #> -<# foreach (ModelProperty modelProperty in GetModelProperties()) { #> +<# if (ModelHasPrimaryKey) { #> + + @Html.HiddenFor(model => model.<#= ModelPrimaryKeyName #>) +<# } #> +<# + foreach (ModelProperty modelProperty in ModelProperties) { + if (!modelProperty.IsPrimaryKey) { +#>
@Html.LabelFor(model => model.<#= modelProperty.Name #>) @@ -43,7 +50,10 @@ @Html.EditorFor(model => model.<#= modelProperty.Name #>) @Html.ValidationMessageFor(model => model.<#= modelProperty.Name #>)
-<# } #> +<# + } + } +#>

@@ -70,6 +80,23 @@ public class ModelProperty { public string Name { get; set; } + public bool IsPrimaryKey { get; set; } + + public ModelProperty(PropertyInfo propertyInfo) + { + this.Name = propertyInfo.Name; + this.IsPrimaryKey = IsPrimaryKeyProperty(propertyInfo); + } + + bool IsPrimaryKeyProperty(PropertyInfo propertyInfo) + { + return IsMatchIgnoringCase(propertyInfo.Name, "id"); + } + + static bool IsMatchIgnoringCase(string a, string b) + { + return String.Equals(a, b, StringComparison.OrdinalIgnoreCase); + } } public string GetModelDirective() @@ -81,17 +108,48 @@ return String.Empty; } + List modelProperties; + + List ModelProperties { + get { + if (modelProperties == null) { + modelProperties = new List(GetModelProperties()); + } + return modelProperties; + } + } + public IEnumerable GetModelProperties() { var properties = new List(); foreach (PropertyInfo propertyInfo in MvcHost.GetViewDataTypeProperties()) { - properties.Add(CreateModelProperty(propertyInfo)); + properties.Add(new ModelProperty(propertyInfo)); } return properties; } - ModelProperty CreateModelProperty(PropertyInfo propertyInfo) + bool ModelHasPrimaryKey { + get { return ModelPrimaryKeyName.Length > 0; } + } + + string modelPrimaryKeyName; + + string ModelPrimaryKeyName { + get { + if (modelPrimaryKeyName == null) { + modelPrimaryKeyName = GetModelPrimaryKeyName(); + } + return modelPrimaryKeyName; + } + } + + public string GetModelPrimaryKeyName() { - return new ModelProperty() { Name = propertyInfo.Name }; + foreach (ModelProperty modelProperty in ModelProperties) { + if (modelProperty.IsPrimaryKey) { + return modelProperty.Name; + } + } + return ""; } #> \ No newline at end of file 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 564f1ab305..302e05c09d 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 @@ -34,7 +34,14 @@ <%: Html.ValidationSummary(True) %>

<#= MvcHost.ViewDataType.Name #> -<# For Each modelProperty As ModelProperty in GetModelProperties() #> +<# If ModelHasPrimaryKey Then #> + + <%: Html.HiddenFor(Function(model) model.<#= ModelPrimaryKeyName #>) %> +<# End If #> +<# + For Each modelProperty As ModelProperty in ModelProperties + If Not modelProperty.IsPrimaryKey Then +#>
<%: Html.LabelFor(Function(model) model.<#= modelProperty.Name #>) %> @@ -43,7 +50,10 @@ <%: Html.EditorFor(Function(model) model.<#= modelProperty.Name #>) %> <%: Html.ValidationMessageFor(Function(model) model.<#= modelProperty.Name #>) %>
-<# Next #> +<# + End If + Next +#>

@@ -75,7 +85,21 @@ End Property Public Class ModelProperty - Public Property Name As String + Public Property Name() As String + Public Property IsPrimaryKey() As Boolean + + Public Sub New(ByVal propertyInfo As PropertyInfo) + Me.Name = propertyInfo.Name + Me.IsPrimaryKey = IsPrimaryKeyProperty(propertyInfo) + End Sub + + Function IsPrimaryKeyProperty(ByVal propertyInfo As PropertyInfo) As Boolean + Return IsMatchIgnoringCase(propertyInfo.Name, "id") + End Function + + Shared Function IsMatchIgnoringCase(ByVal a As String, ByVal b as String) As Boolean + Return String.Equals(a, b, StringComparison.OrdinalIgnoreCase) + End Function End Class Public Function GetViewPageType() As String @@ -86,15 +110,48 @@ Return String.Empty End Function + Private modelPropertiesList As List(Of ModelProperty) + + ReadOnly Property ModelProperties() As List(Of ModelProperty) + Get + If modelPropertiesList Is Nothing Then + modelPropertiesList = New List(Of ModelProperty)(GetModelProperties()) + End If + Return modelPropertiesList + End Get + End Property + Public Function GetModelProperties() As IEnumerable(Of ModelProperty) Dim properties = New List(Of ModelProperty)() For Each propertyInfo As PropertyInfo In MvcHost.GetViewDataTypeProperties() - properties.Add(CreateModelProperty(propertyInfo)) + properties.Add(new ModelProperty(propertyInfo)) Next Return properties End Function - Function CreateModelProperty(ByVal propertyInfo As PropertyInfo) As ModelProperty - Return New ModelProperty() With { .Name = propertyInfo.Name } + ReadOnly Property ModelHasPrimaryKey As Boolean + Get + Return ModelPrimaryKeyName.Length > 0 + End Get + End Property + + Private modelPrimaryKeyNameValue As String + + ReadOnly Property ModelPrimaryKeyName() As String + Get + If modelPrimaryKeyNameValue Is Nothing Then + modelPrimaryKeyNameValue = GetModelPrimaryKeyName() + End If + Return modelPrimaryKeyNameValue + End Get + End Property + + Public Function GetModelPrimaryKeyName() As String + For Each modelProperty As ModelProperty in ModelProperties + If modelProperty.IsPrimaryKey Then + Return modelProperty.Name + End If + Next + Return "" End Function #> \ No newline at end of file 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 e3da5d0d06..42952dc5ee 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 @@ -35,7 +35,14 @@ End Code @Html.ValidationSummary(True) @

<#= MvcHost.ViewDataType.Name #> -<# For Each modelProperty As ModelProperty in GetModelProperties() #> +<# If ModelHasPrimaryKey Then #> + + @Html.HiddenFor(Function(model) model.<#= ModelPrimaryKeyName #>) +<# End If #> +<# + For Each modelProperty As ModelProperty in ModelProperties + If Not modelProperty.IsPrimaryKey Then +#>
@Html.LabelFor(Function(model) model.<#= modelProperty.Name #>) @@ -44,7 +51,10 @@ End Code @Html.EditorFor(Function(model) model.<#= modelProperty.Name #>) @Html.ValidationMessageFor(Function(model) model.<#= modelProperty.Name #>)
-<# Next #> +<# + End If + Next +#>

@@ -71,7 +81,21 @@ End Using End Property Public Class ModelProperty - Public Property Name As String + Public Property Name() As String + Public Property IsPrimaryKey() As Boolean + + Public Sub New(ByVal propertyInfo As PropertyInfo) + Me.Name = propertyInfo.Name + Me.IsPrimaryKey = IsPrimaryKeyProperty(propertyInfo) + End Sub + + Function IsPrimaryKeyProperty(ByVal propertyInfo As PropertyInfo) As Boolean + Return IsMatchIgnoringCase(propertyInfo.Name, "id") + End Function + + Shared Function IsMatchIgnoringCase(ByVal a As String, ByVal b as String) As Boolean + Return String.Equals(a, b, StringComparison.OrdinalIgnoreCase) + End Function End Class Function GetModelDirective() As String @@ -82,15 +106,48 @@ End Using Return String.Empty End Function + Private modelPropertiesList As List(Of ModelProperty) + + ReadOnly Property ModelProperties() As List(Of ModelProperty) + Get + If modelPropertiesList Is Nothing Then + modelPropertiesList = New List(Of ModelProperty)(GetModelProperties()) + End If + Return modelPropertiesList + End Get + End Property + Public Function GetModelProperties() As IEnumerable(Of ModelProperty) Dim properties = New List(Of ModelProperty)() For Each propertyInfo As PropertyInfo In MvcHost.GetViewDataTypeProperties() - properties.Add(CreateModelProperty(propertyInfo)) + properties.Add(new ModelProperty(propertyInfo)) Next Return properties End Function - Function CreateModelProperty(ByVal propertyInfo As PropertyInfo) As ModelProperty - Return New ModelProperty() With { .Name = propertyInfo.Name } + ReadOnly Property ModelHasPrimaryKey As Boolean + Get + Return ModelPrimaryKeyName.Length > 0 + End Get + End Property + + Private modelPrimaryKeyNameValue As String + + ReadOnly Property ModelPrimaryKeyName() As String + Get + If modelPrimaryKeyNameValue Is Nothing Then + modelPrimaryKeyNameValue = GetModelPrimaryKeyName() + End If + Return modelPrimaryKeyNameValue + End Get + End Property + + Public Function GetModelPrimaryKeyName() As String + For Each modelProperty As ModelProperty in ModelProperties + If modelProperty.IsPrimaryKey Then + Return modelProperty.Name + End If + Next + Return "" End Function #> \ No newline at end of file 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 7eeb1be248..b69fa47e0b 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpEditViewTemplateTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpEditViewTemplateTests.cs @@ -35,6 +35,11 @@ namespace AspNet.Mvc.Tests.CodeTemplates return GetModelProperties().First(); } + Edit.ModelProperty GetModelProperty(string name) + { + return GetModelProperties().First(p => p.Name == name); + } + [Test] public void GetViewPageType_HostViewDataTypeNameIsMyAppMyModel_ReturnsMyAppMyModelSurroundedByAngleBrackets() { @@ -277,5 +282,113 @@ MyView "; Assert.AreEqual(expectedOutput, output); } + + [Test] + public void TransformText_ModelHasIdPropertyAndIsPartialView_FormHasHiddenIdProperty() + { + CreateViewTemplatePreprocessor(); + mvcHost.IsPartialView = true; + Type modelType = typeof(ModelWithIdProperty); + mvcHost.ViewDataType = modelType; + mvcHost.ViewDataTypeName = modelType.FullName; + mvcHost.ViewName = "MyView"; + + string output = templatePreprocessor.TransformText(); + + string expectedOutput = +@"<%@ Control Language=""C#"" Inherits=""System.Web.Mvc.ViewUserControl"" %> + +<% using (Html.BeginForm()) { %> + <%: Html.ValidationSummary(true) %> +

+ ModelWithIdProperty + + <%: Html.HiddenFor(model => model.Id) %> + +
+ <%: Html.LabelFor(model => model.Name) %> +
+
+ <%: Html.EditorFor(model => model.Name) %> + <%: Html.ValidationMessageFor(model => model.Name) %> +
+ +

+ +

+
+<% } %> +
+ <%: Html.ActionLink(""Back"", ""Index"") %> +
+"; + Assert.AreEqual(expectedOutput, output); + } + + [Test] + public void GetModelProperties_ModelHasIdAndNameProperty_IdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithIdProperty); + + Edit.ModelProperty modelProperty = GetModelProperty("Id"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } + + [Test] + public void GetModelProperties_ModelHasIdAndNameProperty_NamePropertyIsNotMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithIdProperty); + + Edit.ModelProperty modelProperty = GetModelProperty("Name"); + + Assert.IsFalse(modelProperty.IsPrimaryKey); + } + + [Test] + public void GetModelProperties_ModelHasIdPropertyInLowerCase_IdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithIdPropertyInLowerCase); + + Edit.ModelProperty modelProperty = GetModelProperty("id"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } + + [Test] + public void GetModelPrimaryKeyName_ModelHasIdAndNameProperty_ReturnsId() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithIdProperty); + + string primaryKeyName = templatePreprocessor.GetModelPrimaryKeyName(); + + Assert.AreEqual("Id", primaryKeyName); + } + + [Test] + public void GetModelPrimaryKeyName_ModelHasIdPropertyInLowerCase_ReturnsLowercaseId() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithIdPropertyInLowerCase); + + string primaryKeyName = templatePreprocessor.GetModelPrimaryKeyName(); + + Assert.AreEqual("id", primaryKeyName); + } + + [Test] + public void GetModelPrimaryKeyName_ModelHasNameProperty_ReturnsEmptyString() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithOneProperty); + + string primaryKeyName = templatePreprocessor.GetModelPrimaryKeyName(); + + Assert.AreEqual(String.Empty, primaryKeyName); + } } } 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 dc26a37d8b..e6d4757a6f 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpEditViewTemplateTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpEditViewTemplateTests.cs @@ -35,6 +35,11 @@ namespace AspNet.Mvc.Tests.CodeTemplates return GetModelProperties().First(); } + Edit.ModelProperty GetModelProperty(string name) + { + return GetModelProperties().First(p => p.Name == name); + } + [Test] public void GetModelDirective_HostViewDataTypeNameIsMyAppMyModel_ReturnsRazorModelFollowedByMyAppMyModel() { @@ -278,5 +283,113 @@ namespace AspNet.Mvc.Tests.CodeTemplates "; Assert.AreEqual(expectedOutput, output); } + + [Test] + public void TransformText_ModelHasIdPropertyAndIsPartialView_FormHasHiddenIdProperty() + { + CreateViewTemplatePreprocessor(); + mvcHost.IsPartialView = true; + Type modelType = typeof(ModelWithIdProperty); + mvcHost.ViewDataType = modelType; + mvcHost.ViewDataTypeName = modelType.FullName; + mvcHost.ViewName = "MyView"; + + string output = templatePreprocessor.TransformText(); + + string expectedOutput = +@"@model AspNet.Mvc.Tests.CodeTemplates.Models.ModelWithIdProperty + +@using (Html.BeginForm()) { + @Html.ValidationSummary(true) +
+ ModelWithIdProperty + + @Html.HiddenFor(model => model.Id) + +
+ @Html.LabelFor(model => model.Name) +
+
+ @Html.EditorFor(model => model.Name) + @Html.ValidationMessageFor(model => model.Name) +
+ +

+ +

+
+} +
+ @Html.ActionLink(""Back"", ""Index"") +
+"; + Assert.AreEqual(expectedOutput, output); + } + + [Test] + public void GetModelProperties_ModelHasIdAndNameProperty_IdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithIdProperty); + + Edit.ModelProperty modelProperty = GetModelProperty("Id"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } + + [Test] + public void GetModelProperties_ModelHasIdAndNameProperty_NamePropertyIsNotMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithIdProperty); + + Edit.ModelProperty modelProperty = GetModelProperty("Name"); + + Assert.IsFalse(modelProperty.IsPrimaryKey); + } + + [Test] + public void GetModelProperties_ModelHasIdPropertyInLowerCase_IdPropertyIsMarkedAsPrimaryKey() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithIdPropertyInLowerCase); + + Edit.ModelProperty modelProperty = GetModelProperty("id"); + + Assert.IsTrue(modelProperty.IsPrimaryKey); + } + + [Test] + public void GetModelPrimaryKeyName_ModelHasIdAndNameProperty_ReturnsId() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithIdProperty); + + string primaryKeyName = templatePreprocessor.GetModelPrimaryKeyName(); + + Assert.AreEqual("Id", primaryKeyName); + } + + [Test] + public void GetModelPrimaryKeyName_ModelHasIdPropertyInLowerCase_ReturnsLowercaseId() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithIdPropertyInLowerCase); + + string primaryKeyName = templatePreprocessor.GetModelPrimaryKeyName(); + + Assert.AreEqual("id", primaryKeyName); + } + + [Test] + public void GetModelPrimaryKeyName_ModelHasNameProperty_ReturnsEmptyString() + { + CreateViewTemplatePreprocessor(); + mvcHost.ViewDataType = typeof(ModelWithOneProperty); + + string primaryKeyName = templatePreprocessor.GetModelPrimaryKeyName(); + + Assert.AreEqual(String.Empty, primaryKeyName); + } } }