/// <summary> /// Writes property accessor /// </summary> /// <param name="writer"></param> /// <param name="property"></param> /// <param name="relatedAssociations"></param> /// <param name="context"></param> protected virtual void WriteClassPropertyAccessors(CodeWriter writer, Column property, IEnumerable <Association> relatedAssociations, GenerationContext context) { //generate [Column(...)] attribute var column = NewAttributeDefinition <ColumnAttribute>(); column["Storage"] = property.Storage; column["Name"] = property.Name; column["DbType"] = property.DbType; // be smart: we only write attributes when they differ from the default values var columnAttribute = new ColumnAttribute(); if (property.IsPrimaryKey != columnAttribute.IsPrimaryKey) { column["IsPrimaryKey"] = property.IsPrimaryKey; } if (property.IsDbGenerated != columnAttribute.IsDbGenerated) { column["IsDbGenerated"] = property.IsDbGenerated; } if (property.AutoSync != DbLinq.Schema.Dbml.AutoSync.Default) { column["AutoSync"] = new EnumFullname("AutoSync", property.AutoSync); } if (property.CanBeNull != columnAttribute.CanBeNull) { column["CanBeNull"] = property.CanBeNull; } if (property.Expression != null) { column["Expression"] = property.Expression; } var specifications = property.AccessModifierSpecified ? GetSpecificationDefinition(property.AccessModifier) : SpecificationDefinition.Public; if (property.ModifierSpecified) { specifications |= GetSpecificationDefinition(property.Modifier); } //using (WriteAttributes(writer, context.Parameters.MemberExposedAttributes)) using (WriteAttributes(writer, GetAttributeNames(context, context.Parameters.MemberAttributes))) using (writer.WriteAttribute(NewAttributeDefinition <DebuggerNonUserCodeAttribute>())) using (writer.WriteAttribute(column)) using (writer.WriteProperty(specifications, property.Member, GetTypeOrExtendedType(writer, property))) { // on auto storage, we're just lazy if (property.Storage == null) { writer.WriteAutomaticPropertyGetSet(); } else { using (writer.WritePropertyGet()) { writer.WriteLine(writer.GetReturnStatement(writer.GetVariableExpression(property.Storage))); } using (writer.WritePropertySet()) { WriteClassPropertyAccessorSet(writer, property, relatedAssociations, context); } } } }
/// <summary> /// Writes property accessor /// </summary> /// <param name="writer"></param> /// <param name="property"></param> /// <param name="relatedAssociations"></param> /// <param name="context"></param> protected virtual void WriteClassPropertyAccessors(CodeWriter writer, Column property, IEnumerable<Association> relatedAssociations, GenerationContext context) { //generate [Column(...)] attribute var column = NewAttributeDefinition<ColumnAttribute>(); column["Storage"] = property.Storage; column["Name"] = property.Name; column["DbType"] = property.DbType; // be smart: we only write attributes when they differ from the default values var columnAttribute = new ColumnAttribute(); if (property.IsPrimaryKey != columnAttribute.IsPrimaryKey) column["IsPrimaryKey"] = property.IsPrimaryKey; if (property.IsDbGenerated != columnAttribute.IsDbGenerated) column["IsDbGenerated"] = property.IsDbGenerated; if (property.AutoSync != DbLinq.Schema.Dbml.AutoSync.Default) column["AutoSync"] = new EnumFullname("AutoSync", property.AutoSync); if (property.CanBeNull != columnAttribute.CanBeNull) column["CanBeNull"] = property.CanBeNull; if (property.Expression != null) column["Expression"] = property.Expression; var specifications = property.AccessModifierSpecified ? GetSpecificationDefinition(property.AccessModifier) : SpecificationDefinition.Public; if (property.ModifierSpecified) specifications |= GetSpecificationDefinition(property.Modifier); //using (WriteAttributes(writer, context.Parameters.MemberExposedAttributes)) using (WriteAttributes(writer, GetAttributeNames(context, context.Parameters.MemberAttributes))) using (writer.WriteAttribute(NewAttributeDefinition<DebuggerNonUserCodeAttribute>())) using (writer.WriteAttribute(column)) using (writer.WriteProperty(specifications, property.Member, GetTypeOrExtendedType(writer, property))) { // on auto storage, we're just lazy if (property.Storage == null) writer.WriteAutomaticPropertyGetSet(); else { using (writer.WritePropertyGet()) { writer.WriteLine(writer.GetReturnStatement(writer.GetVariableExpression(property.Storage))); } using (writer.WritePropertySet()) { WriteClassPropertyAccessorSet(writer, property, relatedAssociations, context); } } } }