Tuan Hoang Anh
Tuan Hoang Anh

Reputation: 994

ServiceStack OrmLite create table with [AutoIncrement] fail

I am using ServiceStack version="3.9.54" targetFramework="net40" with PostgreSQL.\

When i create table with

public class test
{
    [AutoIncrement]
    public int id { get; set; }
    public string test_name { get; set; }

}

dbConn.CreateTable<test>(true);

CREATE TABLE test
(
  id serial NOT NULL,
  test_name text,
  CONSTRAINT test_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE);

But when i create with

 public class test
    {
        public string test_name { get; set; }

        [AutoIncrement]
        public int id { get; set; }

    }
dbConn.CreateTable<test>(true);

Here is table on Postgres

CREATE TABLE test
(
  test_name text NOT NULL,
  id integer NOT NULL,
  CONSTRAINT test_pkey PRIMARY KEY (test_name)
)
WITH (
  OIDS=FALSE
);

What happen with my id columns. Is it bug ?

Thanks for your help

Tuan Hoang Anh

Upvotes: 1

Views: 1168

Answers (1)

paaschpa
paaschpa

Reputation: 4816

I think there are some conventions and case-sensitivity at play here. If you change id to Id it should work

public class test
{
    public string test_name { get; set; }

    [AutoIncrement]
    public int Id { get; set; }

}
dbConn.CreateTable<test>(true);

OrmLite expects an 'Id' property to be present and to be the primary key. You can attribute a property with [PrimaryKey] if you don't want to use Id. However, in this case attributing id with [PrimaryKey] will attempt to create 2 primary keys since OrmLite can't find an Id field and (I think) defaults the first property it finds to be the primary key (can't find docs/proof to back this up, though)

Upvotes: 3

Related Questions