/// <summary> /// Writes the C# code of the table /// </summary> /// <returns></returns> public string Write() { var codeTarget = _codeWriterSettings.CodeTarget; _dataAnnotationWriter = new DataAnnotationWriter(IsEntityFramework(), _codeWriterSettings); var className = _table.NetName; if (string.IsNullOrEmpty(className) && _table.DatabaseSchema != null) { PrepareSchemaNames.Prepare(_table.DatabaseSchema, _codeWriterSettings.Namer); className = _table.NetName; } _dataTypeWriter.CodeTarget = codeTarget; _inheritanceTable = _table.FindInheritanceTable(); WriteNamespaces(); if (!string.IsNullOrEmpty(_codeWriterSettings.Namespace)) { _cb.BeginNest("namespace " + _codeWriterSettings.Namespace); } if (codeTarget == CodeTarget.PocoRiaServices) { WriteRiaClass(className); } else { var tableOrView = _table is DatabaseView ? "view" : "table"; var comment = "Class representing " + _table.Name + " " + tableOrView; var classDefinition = "public class " + className; if (_inheritanceTable != null) { classDefinition += " : " + _inheritanceTable.NetName; } using (_cb.BeginNest(classDefinition, comment)) { WriteClassMembers(className); } } if (_table.HasCompositeKey && _inheritanceTable == null) { WriteCompositeKeyClass(className); } if (!string.IsNullOrEmpty(_codeWriterSettings.Namespace)) { _cb.EndNest(); } return(_cb.ToString()); }
private void AddEquals() { using (_cb.BeginNest("public override bool Equals(object obj)")) { _cb.AppendLine("var x = obj as " + NetName + ";"); _cb.AppendLine("if (x == null) return false;"); foreach (var column in _columns) { var primaryKeyName = _namer.PrimaryKeyName(column); var datatype = column.DataType ?? new DataType("x", "x"); //we'll only use scalar key properties //if (column.IsForeignKey) //{ // _cb.AppendLine("if (" + primaryKeyName + " == null && x." + primaryKeyName + " == null) return ReferenceEquals(this, x);"); //} //else if (datatype.IsNumeric) { _cb.AppendLine("if (" + primaryKeyName + " == 0 && x." + primaryKeyName + " == 0) return ReferenceEquals(this, x);"); } else if (datatype.IsString) { _cb.AppendLine("if (string.IsNullOrEmpty(" + primaryKeyName + ") && string.IsNullOrEmpty(" + primaryKeyName + ")) return object.ReferenceEquals(this, x);"); } } var sb = new StringBuilder(); sb.Append("return "); var i = 0; foreach (var column in _columns) { if (i != 0) { sb.Append(" && "); } i++; var primaryKeyName = _namer.PrimaryKeyName(column); sb.Append("(" + primaryKeyName + " == x." + primaryKeyName + ")"); } sb.AppendLine(";"); _cb.AppendLine(sb.ToString()); } }
public string Write() { //find first table with no dependencies (foreign keys) and a .Net name. var entity = _schema.Tables .FirstOrDefault(t => t.ForeignKeys.Count == 0 && !string.IsNullOrEmpty(t.NetName)); if (entity == null) { return(null); } //we'll also run a sproc if we find one var sproc = _schema.StoredProcedures.FirstOrDefault(p => p.ResultSets.Count > 0); ClassName = entity.NetName + "Test"; WriteNamespaces(sproc != null); using (_cb.BeginNest("namespace " + _codeWriterSettings.Namespace + ".Tests")) { _cb.AppendLine("[TestClass]"); using (_cb.BeginNest("public class " + ClassName)) { WriteStaticConstructor(entity); WriteOpenSession(); WriteGenerateString(); WriteCreateEntity(entity); WriteCrudTest(entity); WriteSproc(sproc); } } return(_cb.ToString()); }