ServiceStack OrmLite使用[AutoIncrement]创建表失败

时间:2013-06-28 10:21:15

标签: servicestack ormlite-servicestack

我在PostgreSQL上使用ServiceStack version =“3.9.54”targetFramework =“net40”。\

当我使用

创建表格时
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);

但是当我用

创建时
 public class test
    {
        public string test_name { get; set; }

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

    }
dbConn.CreateTable<test>(true);

这是关于Postgres的表格

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

我的id列会发生什么。是bug吗?

感谢您的帮助

Tuan Hoang Anh

1 个答案:

答案 0 :(得分:3)

我认为这里有一些惯例和区分大小写。如果您将id更改为Id,则应该

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

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

}
dbConn.CreateTable<test>(true);

OrmLite expects an 'Id' property出现并成为主键。如果您不想使用[PrimaryKey],则可以使用Id对属性进行归因。但是,在这种情况下,将id[PrimaryKey]一起使用将尝试创建2个主键,因为OrmLite无法找到Id字段,并且(我认为)默认将它找到的第一个属性作为主键(虽然没有找到文件/证明来支持这一点。