[fluent-nhib] Re: Possible problem with IPropertyConvention
How recently did you update? Properties can have multiple columns and it was ambiguous whether you were setting the name or adding an extra one, I've since updated the code to make it a bit clearer. If I remember correctly your Apply should contain: target.ColumnNames.Clear(); // make sure there are no other columns specified first target.ColumnNames.Add(target.Property.Name.ToUpperCaseUnderscore()); On Sat, Mar 14, 2009 at 4:07 PM, JohnRudolfLewis johnrle...@gmail.comwrote: I am playing with the latest conventions code and loving it so far. But when I tried to implement a convention for my column names to match what my Oracle DBA tells me I must do, I run into trouble. When I declare the following: public class ColumnNameConvention : IPropertyConvention { public bool Accept(IProperty target) { return true; } public void Apply(IProperty target) { // ToUpperCaseUnderscore is an extension I declare elsewhere, it returns a string target.ColumnName (target.Property.Name.ToUpperCaseUnderscore()); } } I get the following errors: FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail. NHibernate.MappingException : property mapping has wrong number of columns: MyMappingTest.DomainModel.User.PersonType type: String --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Fluent NHibernate group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~--~~~~--~~--~--~---
[fluent-nhib] Re: Possible problem with IPropertyConvention
I figured out what caused it, but I am still stuck Some of my properties happens to be reserved words in the database. So in my ClassMap, I explicitely declare them like this: Map(x = x.Column) .ColumnName(COLUMN_NAME); I need to be able to explicitly call ColumnName in my ClassMaps for certain cases, and let the convention take care of the rest. But so far, I cannot figure out how to have an IPropertyConvention only kick in where I am not already explicitly calling ColumnName. On Mar 14, 9:07 am, JohnRudolfLewis johnrle...@gmail.com wrote: I am playing with the latest conventions code and loving it so far. But when I tried to implement a convention for my column names to match what my Oracle DBA tells me I must do, I run into trouble. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Fluent NHibernate group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~--~~~~--~~--~--~---
[fluent-nhib] Re: Possible problem with IPropertyConvention
I forget the number, but it was from yesterday. I will try to rewrite considering what you just posted. (our posts crossed) On Mar 14, 9:16 am, James Gregory jagregory@gmail.com wrote: How recently did you update? Properties can have multiple columns and it was ambiguous whether you were setting the name or adding an extra one, I've since updated the code to make it a bit clearer. If I remember correctly your Apply should contain: target.ColumnNames.Clear(); // make sure there are no other columns specified first target.ColumnNames.Add(target.Property.Name.ToUpperCaseUnderscore()); On Sat, Mar 14, 2009 at 4:07 PM, JohnRudolfLewis johnrle...@gmail.comwrote: I am playing with the latest conventions code and loving it so far. But when I tried to implement a convention for my column names to match what my Oracle DBA tells me I must do, I run into trouble. When I declare the following: public class ColumnNameConvention : IPropertyConvention { public bool Accept(IProperty target) { return true; } public void Apply(IProperty target) { // ToUpperCaseUnderscore is an extension I declare elsewhere, it returns a string target.ColumnName (target.Property.Name.ToUpperCaseUnderscore()); } } I get the following errors: FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail. NHibernate.MappingException : property mapping has wrong number of columns: MyMappingTest.DomainModel.User.PersonType type: String- Hide quoted text - - Show quoted text - --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Fluent NHibernate group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~--~~~~--~~--~--~---
[fluent-nhib] Re: Possible problem with IPropertyConvention
I got it working, but the code does not feel right. The code in my Apply method is what really bugs me. In my class map, I now need to do the following.. Map(x = x.Column, COLUMN_NAME) And in my IPropertyConvention I need to do this public void Apply(IProperty target) { if (target.ColumnNames.List().Count == 0) { target.ColumnNames.Add (target.Property.Name.ToUpperCaseUnderscore()); } } On Mar 14, 9:29 am, JohnRudolfLewis johnrle...@gmail.com wrote: I forget the number, but it was from yesterday. I will try to rewrite considering what you just posted. (our posts crossed) On Mar 14, 9:16 am, James Gregory jagregory@gmail.com wrote: How recently did you update? Properties can have multiple columns and it was ambiguous whether you were setting the name or adding an extra one, I've since updated the code to make it a bit clearer. If I remember correctly your Apply should contain: target.ColumnNames.Clear(); // make sure there are no other columns specified first target.ColumnNames.Add(target.Property.Name.ToUpperCaseUnderscore()); On Sat, Mar 14, 2009 at 4:07 PM, JohnRudolfLewis johnrle...@gmail.comwrote: I am playing with the latest conventions code and loving it so far. But when I tried to implement a convention for my column names to match what my Oracle DBA tells me I must do, I run into trouble. When I declare the following: public class ColumnNameConvention : IPropertyConvention { public bool Accept(IProperty target) { return true; } public void Apply(IProperty target) { // ToUpperCaseUnderscore is an extension I declare elsewhere, it returns a string target.ColumnName (target.Property.Name.ToUpperCaseUnderscore()); } } I get the following errors: FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail. NHibernate.MappingException : property mapping has wrong number of columns: MyMappingTest.DomainModel.User.PersonType type: String- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text - --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Fluent NHibernate group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~--~~~~--~~--~--~---
[fluent-nhib] Re: Possible problem with IPropertyConvention
Thanks. That tidbit will proove useful. But I still think that there should be a clean way of making the IPropertyConvention only apply if I've not already explicitly specified a column name. On Mar 14, 9:58 am, James Gregory jagregory@gmail.com wrote: If your column names are sometimes reserved words, you can wrap them in backticks. So you could remove the explicit column name from the Map call and modify your convention to do: ` + target.Property.Name.ToUpperCaseUnderscore() + ` That will make NHibernate escape the column names in any queries. On Sat, Mar 14, 2009 at 4:42 PM, JohnRudolfLewis johnrle...@gmail.comwrote: I got it working, but the code does not feel right. The code in my Apply method is what really bugs me. In my class map, I now need to do the following.. Map(x = x.Column, COLUMN_NAME) And in my IPropertyConvention I need to do this public void Apply(IProperty target) { if (target.ColumnNames.List().Count == 0) { target.ColumnNames.Add (target.Property.Name.ToUpperCaseUnderscore()); } } On Mar 14, 9:29 am, JohnRudolfLewis johnrle...@gmail.com wrote: I forget the number, but it was from yesterday. I will try to rewrite considering what you just posted. (our posts crossed) On Mar 14, 9:16 am, James Gregory jagregory@gmail.com wrote: How recently did you update? Properties can have multiple columns and it was ambiguous whether you were setting the name or adding an extra one, I've since updated the code to make it a bit clearer. If I remember correctly your Apply should contain: target.ColumnNames.Clear(); // make sure there are no other columns specified first target.ColumnNames.Add(target.Property.Name.ToUpperCaseUnderscore()); On Sat, Mar 14, 2009 at 4:07 PM, JohnRudolfLewis johnrle...@gmail.com wrote: I am playing with the latest conventions code and loving it so far. But when I tried to implement a convention for my column names to match what my Oracle DBA tells me I must do, I run into trouble. When I declare the following: public class ColumnNameConvention : IPropertyConvention { public bool Accept(IProperty target) { return true; } public void Apply(IProperty target) { // ToUpperCaseUnderscore is an extension I declare elsewhere, it returns a string target.ColumnName (target.Property.Name.ToUpperCaseUnderscore()); } } I get the following errors: FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail. NHibernate.MappingException : property mapping has wrong number of columns: MyMappingTest.DomainModel.User.PersonType type: String- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text - --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Fluent NHibernate group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~--~~~~--~~--~--~---
[fluent-nhib] Re: Possible problem with IPropertyConvention
What's wrong with this: public bool Accept(IProperty target) { return (target.ColumnNames.List().Count == 0); } On Sat, Mar 14, 2009 at 5:15 PM, JohnRudolfLewis johnrle...@gmail.comwrote: Thanks. That tidbit will proove useful. But I still think that there should be a clean way of making the IPropertyConvention only apply if I've not already explicitly specified a column name. On Mar 14, 9:58 am, James Gregory jagregory@gmail.com wrote: If your column names are sometimes reserved words, you can wrap them in backticks. So you could remove the explicit column name from the Map call and modify your convention to do: ` + target.Property.Name.ToUpperCaseUnderscore() + ` That will make NHibernate escape the column names in any queries. On Sat, Mar 14, 2009 at 4:42 PM, JohnRudolfLewis johnrle...@gmail.com wrote: I got it working, but the code does not feel right. The code in my Apply method is what really bugs me. In my class map, I now need to do the following.. Map(x = x.Column, COLUMN_NAME) And in my IPropertyConvention I need to do this public void Apply(IProperty target) { if (target.ColumnNames.List().Count == 0) { target.ColumnNames.Add (target.Property.Name.ToUpperCaseUnderscore()); } } On Mar 14, 9:29 am, JohnRudolfLewis johnrle...@gmail.com wrote: I forget the number, but it was from yesterday. I will try to rewrite considering what you just posted. (our posts crossed) On Mar 14, 9:16 am, James Gregory jagregory@gmail.com wrote: How recently did you update? Properties can have multiple columns and it was ambiguous whether you were setting the name or adding an extra one, I've since updated the code to make it a bit clearer. If I remember correctly your Apply should contain: target.ColumnNames.Clear(); // make sure there are no other columns specified first target.ColumnNames.Add(target.Property.Name.ToUpperCaseUnderscore()); On Sat, Mar 14, 2009 at 4:07 PM, JohnRudolfLewis johnrle...@gmail.com wrote: I am playing with the latest conventions code and loving it so far. But when I tried to implement a convention for my column names to match what my Oracle DBA tells me I must do, I run into trouble. When I declare the following: public class ColumnNameConvention : IPropertyConvention { public bool Accept(IProperty target) { return true; } public void Apply(IProperty target) { // ToUpperCaseUnderscore is an extension I declare elsewhere, it returns a string target.ColumnName (target.Property.Name.ToUpperCaseUnderscore()); } } I get the following errors: FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail. NHibernate.MappingException : property mapping has wrong number of columns: MyMappingTest.DomainModel.User.PersonType type: String- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text - --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Fluent NHibernate group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~--~~~~--~~--~--~---
[fluent-nhib] Re: Possible problem with IPropertyConvention
Duh... Thanks. On Mar 14, 10:17 am, James Gregory jagregory@gmail.com wrote: What's wrong with this: public bool Accept(IProperty target) { return (target.ColumnNames.List().Count == 0); } On Sat, Mar 14, 2009 at 5:15 PM, JohnRudolfLewis johnrle...@gmail.comwrote: Thanks. That tidbit will proove useful. But I still think that there should be a clean way of making the IPropertyConvention only apply if I've not already explicitly specified a column name. On Mar 14, 9:58 am, James Gregory jagregory@gmail.com wrote: If your column names are sometimes reserved words, you can wrap them in backticks. So you could remove the explicit column name from the Map call and modify your convention to do: ` + target.Property.Name.ToUpperCaseUnderscore() + ` That will make NHibernate escape the column names in any queries. On Sat, Mar 14, 2009 at 4:42 PM, JohnRudolfLewis johnrle...@gmail.com wrote: I got it working, but the code does not feel right. The code in my Apply method is what really bugs me. In my class map, I now need to do the following.. Map(x = x.Column, COLUMN_NAME) And in my IPropertyConvention I need to do this public void Apply(IProperty target) { if (target.ColumnNames.List().Count == 0) { target.ColumnNames.Add (target.Property.Name.ToUpperCaseUnderscore()); } } On Mar 14, 9:29 am, JohnRudolfLewis johnrle...@gmail.com wrote: I forget the number, but it was from yesterday. I will try to rewrite considering what you just posted. (our posts crossed) On Mar 14, 9:16 am, James Gregory jagregory@gmail.com wrote: How recently did you update? Properties can have multiple columns and it was ambiguous whether you were setting the name or adding an extra one, I've since updated the code to make it a bit clearer. If I remember correctly your Apply should contain: target.ColumnNames.Clear(); // make sure there are no other columns specified first target.ColumnNames.Add(target.Property.Name.ToUpperCaseUnderscore()); On Sat, Mar 14, 2009 at 4:07 PM, JohnRudolfLewis johnrle...@gmail.com wrote: I am playing with the latest conventions code and loving it so far. But when I tried to implement a convention for my column names to match what my Oracle DBA tells me I must do, I run into trouble. When I declare the following: public class ColumnNameConvention : IPropertyConvention { public bool Accept(IProperty target) { return true; } public void Apply(IProperty target) { // ToUpperCaseUnderscore is an extension I declare elsewhere, it returns a string target.ColumnName (target.Property.Name.ToUpperCaseUnderscore()); } } I get the following errors: FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail. NHibernate.MappingException : property mapping has wrong number of columns: MyMappingTest.DomainModel.User.PersonType type: String- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text - --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Fluent NHibernate group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~--~~~~--~~--~--~---
[fluent-nhib] Re: Possible problem with IPropertyConvention
No problem :) On Sat, Mar 14, 2009 at 5:32 PM, JohnRudolfLewis johnrle...@gmail.comwrote: Duh... Thanks. On Mar 14, 10:17 am, James Gregory jagregory@gmail.com wrote: What's wrong with this: public bool Accept(IProperty target) { return (target.ColumnNames.List().Count == 0); } On Sat, Mar 14, 2009 at 5:15 PM, JohnRudolfLewis johnrle...@gmail.com wrote: Thanks. That tidbit will proove useful. But I still think that there should be a clean way of making the IPropertyConvention only apply if I've not already explicitly specified a column name. On Mar 14, 9:58 am, James Gregory jagregory@gmail.com wrote: If your column names are sometimes reserved words, you can wrap them in backticks. So you could remove the explicit column name from the Map call and modify your convention to do: ` + target.Property.Name.ToUpperCaseUnderscore() + ` That will make NHibernate escape the column names in any queries. On Sat, Mar 14, 2009 at 4:42 PM, JohnRudolfLewis johnrle...@gmail.com wrote: I got it working, but the code does not feel right. The code in my Apply method is what really bugs me. In my class map, I now need to do the following.. Map(x = x.Column, COLUMN_NAME) And in my IPropertyConvention I need to do this public void Apply(IProperty target) { if (target.ColumnNames.List().Count == 0) { target.ColumnNames.Add (target.Property.Name.ToUpperCaseUnderscore()); } } On Mar 14, 9:29 am, JohnRudolfLewis johnrle...@gmail.com wrote: I forget the number, but it was from yesterday. I will try to rewrite considering what you just posted. (our posts crossed) On Mar 14, 9:16 am, James Gregory jagregory@gmail.com wrote: How recently did you update? Properties can have multiple columns and it was ambiguous whether you were setting the name or adding an extra one, I've since updated the code to make it a bit clearer. If I remember correctly your Apply should contain: target.ColumnNames.Clear(); // make sure there are no other columns specified first target.ColumnNames.Add(target.Property.Name.ToUpperCaseUnderscore()); On Sat, Mar 14, 2009 at 4:07 PM, JohnRudolfLewis johnrle...@gmail.com wrote: I am playing with the latest conventions code and loving it so far. But when I tried to implement a convention for my column names to match what my Oracle DBA tells me I must do, I run into trouble. When I declare the following: public class ColumnNameConvention : IPropertyConvention { public bool Accept(IProperty target) { return true; } public void Apply(IProperty target) { // ToUpperCaseUnderscore is an extension I declare elsewhere, it returns a string target.ColumnName (target.Property.Name.ToUpperCaseUnderscore()); } } I get the following errors: FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail. NHibernate.MappingException : property mapping has wrong number of columns: MyMappingTest.DomainModel.User.PersonType type: String- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text - --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Fluent NHibernate group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~--~~~~--~~--~--~---