我有一个包含以下列的表:
ContractorId ......... INT ............. IDENTITY
ContractorName ........ Varchar(50)....... PK
ContractorGrade ...... .... Varchar(3)....... PK
PetaPoco T4模板生成的类如下所示:
[TableName("contractor_master")]
[PrimaryKey("contractorname", autoIncrement=false)]
[ExplicitColumns]
public partial class contractor_master : TubewellRepo.Record<contractor_master>
{
[Column]
public int contractorid
{
get
{
return _contractorid;
}
set
{
_contractorid = value;
MarkColumnModified("contractorid");
}
}
int _contractorid;
[Column]
public string contractorname
{
get
{
return _contractorname;
}
set
{
_contractorname = value;
MarkColumnModified("contractorname");
}
}
string _contractorname;
[Column]
public string contractorgrade
{
get
{
return _contractorgrade;
}
set
{
_contractorgrade = value;
MarkColumnModified("contractorgrade");
}
}
string _contractorgrade;
}
Run Code Online (Sandbox Code Playgroud)
INSERT新记录的代码如下:
// Insert a record
var Contractor=new contractor_master();
Contractor.contractorname = "Super Borewells";
Contractor.contractorgrade = "A";
db.Insert(Contractor);
Run Code Online (Sandbox Code Playgroud)
在类代码的第二行中,我想知道如何提及复合键,即(ContractorName + ContractorGrade).
其次,它没有插入记录,因为它需要Id列.即使ContractorId是IDENTITY,它也不是主键.
它不会插入新记录并给出错误,因为它在IDENTITY列中插入0.
我的分支在这里:https://github.com/schotime/petapoco 通过指定PrimaryKey属性支持复合主键,如:
[PrimaryKey("ContractorName,ContractorGrade")]
Run Code Online (Sandbox Code Playgroud)
如果你想要那里的标识栏,我不确定它是如何工作的.