我在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答案 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字段,并且(我认为)默认将它找到的第一个属性作为主键(虽然没有找到文件/证明来支持这一点。