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)));
                    }
                }
            }
        }
Example #3
0
 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);
 }
Example #4
0
 public virtual void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context)
 {
 }
Example #5
0
        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;
            }
        }
Example #6
0
        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();
        }