Without the convention, everything runs well. With the convention enabled, I *suspect* there is a type mismatch between the database columns i.e. MEDIUMINT in table 1 and INT In table 2.
Thank you. Isaac On Mon, Mar 15, 2010 at 3:48 AM, Paul Batum <paul.ba...@gmail.com> wrote: > Your convention looks correct to me. I have no experience with MySQL so I'm > not really familiar with the error you are getting. > > Can you clarify, do you still get this error without the convention? > > > On Mon, Mar 15, 2010 at 1:33 AM, Isaac Inyang <isaac.iny...@gmail.com>wrote: > >> Hello Paul, >> >> I thank you very much for your mail. I downloaded a newer version of FNH. >> >> Below is the convention class which I wrote to apply to all entities whose >> ID are of the UINT type. >> >> *Convention Code* >> >> public class UIntPrimaryKeyNamingConvention : IIdConvention, >> IIdConventionAcceptance >> { >> public void Apply(IIdentityInstance id) >> { >> id.CustomSqlType("MEDIUMINT UNSIGNED"); >> } >> >> public void Accept(IAcceptanceCriteria<IIdentityInspector> >> criteria) >> { >> criteria.Expect(i => i.Type == typeof(uint)); >> } >> } >> >> >> Applying this to create my database throws exceptions. Looking closely at >> the exceptions, I noticed the exceptions are being thrown when REFERENCES to >> such entities are being applied. >> >> Please, what can be done? >> >> Thanking you in anticipation. >> >> Isaac >> >> >> *Details of the exception thrown can be seen below:* >> >> alter table `ScratchFail` >> add index (StudentEnrolId), >> add constraint FK19A86696AF8F2A12 >> foreign key (StudentEnrolId) >> references `StudentEnrol` (StudentEnrolId) >> System.TypeInitializationException: The type initializer for 'Nested' >> threw an exception. ---> NHibernate.HibernateException: Can't create table >> 'netquepgcurrent.#sql-f0_27' (errno >> : 150) ---> MySql.Data.MySqlClient.MySqlException: Can't create table >> 'netquepgcurrent.#sql-f0_27' (errno: 150) >> at MySql.Data.MySqlClient.MySqlStream.ReadPacket() >> at MySql.Data.MySqlClient.NativeDriver.ReadResult() >> at MySql.Data.MySqlClient.ResultSet.NextResult() >> at MySql.Data.MySqlClient.MySqlDataReader.NextResult() >> at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior >> behavior) >> at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() >> at NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action`1 scriptAction, >> Boolean export, Boolean throwOnError, TextWriter exportOutput, IDbCommand >> statement, String sql) >> at NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action`1 scriptAction, >> Boolean export, Boolean justDrop, IDbConnection connection, TextWriter >> exportOutput) >> at NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action`1 scriptAction, >> Boolean export, Boolean justDrop) >> --- End of inner exception stack trace --- >> at NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action`1 scriptAction, >> Boolean export, Boolean justDrop) >> at NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Boolean script, Boolean >> export, Boolean justDrop) >> at netquepgcurrent.NHH..ctor() in E:\source.code\Visual Studio >> 2008\projects\...@college\college Tools\netquepgcurrent\NHH.cs:line 40 >> at netquepgcurrent.NHH.Nested..cctor() in E:\source.code\Visual Studio >> 2008\projects\...@college\college Tools\netquepgcurrent\NHH.cs:line 89 >> --- End of inner exception stack trace --- >> at netquepgcurrent.NHH.get_Instance() in E:\source.code\Visual Studio >> 2008\projects\...@college\college Tools\netquepgcurrent\NHH.cs:line 66 >> at netquepgcurrent.NHH.Init() in E:\source.code\Visual Studio >> 2008\projects\...@college\college Tools\netquepgcurrent\NHH.cs:line 71 >> at ConsoleApplication4_Conversion.Program.Run() in >> E:\source.code\Visual Studio 2008\projects\...@college\college >> Tools\ConsoleApplication4-Conversion\Program.cs:line 41 >> at ConsoleApplication4_Conversion.Program.Main(String[] args) in >> E:\source.code\Visual Studio 2008\projects\...@college\college >> Tools\ConsoleApplication4-Conversion\Program.cs:line 24 >> >> >> >> On Mon, Mar 8, 2010 at 12:40 AM, Paul Batum <paul.ba...@gmail.com> wrote: >> >>> Perhaps you don't have the latest version of the code base? >>> >>> >>> http://github.com/jagregory/fluent-nhibernate/blob/master/src/FluentNHibernate/Mapping/IdentityPart.cs >>> >>> >>> <http://github.com/jagregory/fluent-nhibernate/blob/master/src/FluentNHibernate/Mapping/IdentityPart.cs>(towards >>> the bottom, you'll see theres a CustomSqlType method) >>> >>> >>> On Mon, Mar 8, 2010 at 3:16 AM, Isaac Inyang <isaac.iny...@gmail.com>wrote: >>> >>>> Paul, >>>> >>>> From my experience, CustomSqlType is only available to PropertyPart >>>> (i.e. the Map method) but not to IdentityPart (i.e. the Id method). >>>> >>>> Is there some way to get this done? >>>> >>>> Thank you. >>>> >>>> Isaac >>>> >>>> >>>> >>>> >>>> On Sun, Mar 7, 2010 at 1:51 PM, Paul Batum <paul.ba...@gmail.com>wrote: >>>> >>>>> I believe something like this should do it: >>>>> >>>>> Id(i => i.PersonId) >>>>> .CustomSqlType("MEDIUMINT") >>>>> .GeneratedBy.Identity(); >>>>> >>>>> >>>>> On Thu, Mar 4, 2010 at 8:26 PM, Isaac Inyang >>>>> <isaac.iny...@gmail.com>wrote: >>>>> >>>>>> Hello, >>>>>> >>>>>> Using Fluent NHibernate, how do I specify the *Custom SQL Type* which >>>>>> my *Identity *properties will be mapped to? >>>>>> >>>>>> Specifically, I want all Int32 fields to be mapped to MEDIUMINT (3 >>>>>> bytes) within MySQL. Referring to the code below, I want PersonId to be >>>>>> of >>>>>> type MEDIUMINT in the database. >>>>>> >>>>>> *Entity Definition*: >>>>>> >>>>>> public class Person >>>>>> { >>>>>> public virtual int PersonId { get; set; } >>>>>> public virtual string FullName { get; set; } >>>>>> public virtual int Age { get; set; } >>>>>> } >>>>>> >>>>>> *Mapping Class*: >>>>>> >>>>>> public class PersonMap : ClassMap<Person> >>>>>> { >>>>>> public PersonMap() >>>>>> { >>>>>> Id(i => i.PersonId).GeneratedBy.Identity(); >>>>>> Map(i => i.FullName); >>>>>> Map(i => i.Age).CustomSqlType("mediumint"); >>>>>> } >>>>>> } >>>>>> >>>>>> *Generated HBM File*: >>>>>> >>>>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >>>>>> default-access="property" auto-import="true" default-cascade="none" >>>>>> default-lazy="true"> >>>>>> <class xmlns="urn:nhibernate-mapping-2.2" >>>>>> name="netquepgcurrent.Entities.Person, netquepgcurrent, Version=1.0.0.0, >>>>>> Culture=neutral, PublicKeyToken=null" table="`Person`"> >>>>>> <id name="PersonId" type="System.Int32, mscorlib, Version=2.0.0.0, >>>>>> Culture=neutral, PublicKeyToken=b77a5c561934e089"> >>>>>> <column name="PersonId" /> >>>>>> <generator class="identity" /> >>>>>> </id> >>>>>> <property name="FullName" type="System.String, mscorlib, >>>>>> Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> >>>>>> <column name="FullName" /> >>>>>> </property> >>>>>> <property name="Age" type="System.Int32, mscorlib, >>>>>> Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> >>>>>> <column name="Age" sql-type="mediumint" /> >>>>>> </property> >>>>>> </class> >>>>>> </hibernate-mapping> >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Fluent NHibernate" group. >>>>>> To post to this group, send email to >>>>>> fluent-nhibern...@googlegroups.com. >>>>>> To unsubscribe from this group, send email to >>>>>> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >>>>>> . >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/fluent-nhibernate?hl=en. >>>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Fluent NHibernate" group. >>>>> To post to this group, send email to >>>>> fluent-nhibern...@googlegroups.com. >>>>> To unsubscribe from this group, send email to >>>>> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >>>>> . >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/fluent-nhibernate?hl=en. >>>>> >>>> >>>> -- >>>> 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<fluent-nhibernate%2bunsubscr...@googlegroups.com> >>>> . >>>> For more options, visit this group at >>>> http://groups.google.com/group/fluent-nhibernate?hl=en. >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Fluent NHibernate" group. >>> To post to this group, send email to fluent-nhibern...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/fluent-nhibernate?hl=en. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Fluent NHibernate" group. >> To post to this group, send email to fluent-nhibern...@googlegroups.com. >> To unsubscribe from this group, send email to >> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >> . >> For more options, visit this group at >> http://groups.google.com/group/fluent-nhibernate?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Fluent NHibernate" group. > To post to this group, send email to fluent-nhibern...@googlegroups.com. > To unsubscribe from this group, send email to > fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/fluent-nhibernate?hl=en. > -- You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to fluent-nhibern...@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.