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.

Reply via email to