Page 1 of 1

LINQ / MySQL / AutoIncrement

Posted: Mon 06 Jun 2011 09:16
by paulb
Hello,

With the following code:

Code: Select all

[Table]
public class Customer
{
    [Column( IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert )]
    public int Id { get; set; }
    ...
}

public class Database
{
    public static void Create( DataContext context )
    {
        if( !context.DatabaseExists() )
        {
            context.GetTable();

            context.CreateDatabase();
            context.SubmitChanges();
        }
    }
}

The Id field won't have auto increment set in the MySQL database. When I attempt to insert an object an exception is thrown saying that Id doesn't have a default value. I want MySQL to assign the value automatically.

The only solution I could think of was to use a MySqlCommand to alter the table after the database is created - is there a better way?

Thanks,

Paul

Posted: Tue 07 Jun 2011 14:48
by Zero-G.
Hey

I took a look into my generated vb files.
What I saw there, is that you don't have any kind of DBType in you declaration. - Maybe this is the problem.

Try to add: DbType := "BIGINT(19) NOT NULL")> _ after the AutoSync Property.

As I sayed:
1) I use VB.NET
2) The generated code was build with the latest available components

Maybe it will help!?

Have a nice day

Posted: Tue 07 Jun 2011 15:40
by StanislavK
Thank you for the report. We have changed this behaviour so that an auto-incremented column is created if all of the following conditions are met:
- the corresponding entity member is auto-generated and is a part of the entity key;
- this entity member is of an integer type (e.g., Int16 or Int32);
- the IdGenerator property of this member is 'none' or 'Identity';
- this is the only member of this entity class that satisfies the above conditions.

These changes will be available in the nearest build. We will post here when this build is available.

As a temporary workaround, you can use the 'alter' command.

Posted: Fri 17 Jun 2011 16:28
by StanislavK
We have released the new 2.50.25 build of LinqConnect, which includes the fix for the problem with auto-increment fields not being generated by the CreateDatabase method. The new build can be downloaded from
http://www.devart.com/linqconnect/download.html
(the trial and free versions) or from Registered Users' Area (for users with active subscription only):
http://secure.devart.com/

For the information about other fixes and improvements available in LinqConnect 2.50.25, please refer to
http://www.devart.com/forums/viewtopic.php?t=21284