1

我在 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 列会发生什么。是错误吗?

谢谢你的帮助

团黄英

4

1 回答 1

3

我认为这里有一些约定和区分大小写。如果你改变idId应该工作

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

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

}
dbConn.CreateTable<test>(true);

OrmLite期望存在一个“Id”属性并作为主键。如果您[PrimaryKey]不想使用Id. 但是,在这种情况下,归因id[PrimaryKey]将尝试创建 2 个主键,因为 OrmLite 找不到 Id 字段并且(我认为)默认它找到的第一个属性是主键(找不到支持这个的文档/证明不过)

于 2013-06-28T17:31:37.683 回答