public override void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context) { using (writer.WriteRegion(string.Format("{0} handling", typeof(INotifyPropertyChanged).Name))) { const string eventName = "PropertyChanged"; // do not change, part of INotifyPropertyChanged const string propertyNameName = "propertyName"; // event writer.WriteEvent(SpecificationDefinition.Public, eventName, typeof(PropertyChangedEventHandler).Name); writer.WriteLine(); // method using (writer.WriteMethod(SpecificationDefinition.Protected | SpecificationDefinition.Virtual, sendPropertyChangedMethod, null, new ParameterDefinition { Name = propertyNameName, Type = typeof(string) })) { using (writer.WriteIf(writer.GetDifferentExpression(eventName, writer.GetNullExpression()))) { writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression(eventName, writer.GetThisExpression(), writer.GetNewExpression(writer.GetMethodCallExpression(typeof(PropertyChangedEventArgs).Name, propertyNameName))))); } } } }
public override void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context) { using (writer.WriteRegion(string.Format("{0} handling", typeof(INotifyPropertyChanging).Name))) { const string eventName = "PropertyChanging"; // do not change, part of INotifyPropertyChanging const string emptyArgs = "emptyChangingEventArgs"; // event writer.WriteEvent(SpecificationDefinition.Public, eventName, typeof(PropertyChangingEventHandler).Name); writer.WriteLine(); // empty event arg writer.WriteField(SpecificationDefinition.Private | SpecificationDefinition.Static, writer.GetAssignmentExpression(emptyArgs, writer.GetNewExpression( writer.GetMethodCallExpression(typeof(PropertyChangingEventArgs).Name, "\"\""))), typeof(PropertyChangingEventArgs).Name); // method using (writer.WriteMethod(SpecificationDefinition.Protected | SpecificationDefinition.Virtual, sendPropertyChangingMethod, null)) { using (writer.WriteIf(writer.GetDifferentExpression(eventName, writer.GetNullExpression()))) { writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression(eventName, writer.GetThisExpression(), emptyArgs))); } } } }
protected override void WriteDataContextTable(CodeWriter writer, DbLinq.Schema.Dbml.Table table) { writer.WriteLine("public Table<{1}> {0} {{ get {{ return GetTable<{1}>(); }} }}", table.Member, table.Type.Name); }
public virtual void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context) { }
public static void PostProcess_Table(DbLinq.Schema.Dbml.Table table) { // picrap: this is processed earlier //table.Member = Util.FormatTableName(table.Type.Name, util.PluralEnum.Pluralize); //table.Type.Name = Util.FormatTableName(table.Type.Name, util.PluralEnum.Singularize); //if (mmConfig.renamesFile != null) //{ // table.Member = Util.Rename(table.Member); //} foreach (DbLinq.Schema.Dbml.Column col in table.Type.Columns) { if (col.Member == table.Type.Name) { col.Member = "Contents"; //rename field Alltypes.Alltypes to Alltypes.Contents } // picrap processed earlier //col.Storage = "_" + col.Name; // picrap moved to CSCodeWriter //if (CSharp.IsCsharpKeyword(col.Storage)) // col.Storage += "_"; //rename column 'int' -> 'int_' //if (CSharp.IsCsharpKeyword(col.Member)) // col.Member += "_"; //rename column 'int' -> 'int_' } Dictionary <string, bool> knownAssocs = new Dictionary <string, bool>(); foreach (DbLinq.Schema.Dbml.Association assoc in table.Type.Associations) { // picrap: processed earlier //assoc.Type = Util.FormatTableName(assoc.Type, util.PluralEnum.Singularize); //util.PluralEnum pluralEnum = assoc.IsForeignKey // ? util.PluralEnum.Singularize // : util.PluralEnum.Pluralize; //referring to parent: "public Employee Employee" //referring to child: "public EntityMSet<Product> Products" //assoc.Member = Util.FormatTableName(assoc.Member, pluralEnum); if (assoc.Member == table.Type.Name) { string thisKey = assoc.ThisKey ?? "_TODO_L35"; //self-join: rename field Employees.Employees to Employees.RefersToEmployees assoc.Member = thisKey + assoc.Member; } if (knownAssocs.ContainsKey(assoc.Member)) { //this is the Andrus test case in Pgsql: // create table t1 ( private int primary key); // create table t2 ( f1 int references t1, f2 int references t1 ); assoc.Member += "_" + assoc.Name; } // picrap: handled previously //if (mmConfig.renamesFile != null) //{ // assoc.Member = Util.Rename(assoc.Member); //} //if (assoc.Member == "employeeterritories" || assoc.Member == "Employeeterritories") // assoc.Member = "EmployeeTerritories"; //hack to help with Northwind knownAssocs[assoc.Member] = true; } }
private const string ModifiedName = "IsModified"; // mandatory value, since the IModified interface requires this member public override void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context) { writer.WriteCommentLine("IModified backing field"); writer.WritePropertyWithBackingField(SpecificationDefinition.Public, ModifiedName, writer.GetLiteralType(typeof(bool))); writer.WriteLine(); }