今天是个好日子。
我在 PostgreSql 中有几个表。
主表
CREATE TABLE main_table
(
main_table_id serial NOT NULL,
... some data fields ...
table_type integer, <--- Foreign key
CONSTRAINT main_table_id PRIMARY KEY (duty_plan_id),
CONSTRAINT main_table_to_table_type FOREIGN KEY (table_type)
REFERENCES table_type(table_type) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
在一些查找表上参考:
CREATE TABLE table_type
(
table_type integer NOT NULL,
value character varying(100)
CONSTRAINT table_type_id PRIMARY KEY (table_type)
)
并且 C# 类映射到此表:
[Table(Name="main_table")]
public class MainTable
{
[Column(Name="main_table_id", IsPrimaryKey=true,
IsDbGenerated=true, AutoSync=AutoSync.OnInsert)]
internal int Id { get; set; }
.......
[Column(Name = "table_type")]
internal int TableTypeId { get; set; }
private EntityRef<TableType> _TableType;
[Association(IsForeignKey = true, ThisKey = "TableTypeId ",
Storage = "_TableType", Name = "main_table_to_table_type")]
public TableType TableType{
get { return _TableType.Entity; }
set { _TableType.Entity = value; TableTypeId = value.Id; }
}
}
[Table(Name="table_type")]
public class TableType
{
[Column(Name="table_type", IsPrimaryKey=true)]
public int Id { get; set; }
[Column(Name = "value")]
public String Value { get; set; }
}
当我尝试获取所有 MainTable 实体的列表时
(new DataContext(connectionString)).GetTable<MainTable>().MainTables;
从数据库我得到一个错误:
由于对象的当前状态,操作无效
即使我没有调用 TableType 属性,也会出现此错误。但是当我在 TableType 之前评论关联字符串时它就消失了。
我哪里出错了?
我正在使用 .Net 3.5、Mono 2.10 和 PostgreSql 9.2.4