Ich habe eine Tabelle mit folgenden Spalten:
ContractorId ......... INT ............. IDENTITY
ContractorName ........ Varchar(50) ....... P.K
ContractorGrade ....... Varchar(3) ....... P.K
Die Klasse, die vom PetaPoco T4 Template generiert wird, sieht folgendermaßen aus:
[TableName("contractor_master")]
[PrimaryKey("contractorname", autoIncrement=false)]
[ExplicitColumns]
public partial class contractor_master : TubewellRepo.Record
{
[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;
}
Der Code zum Einfügen eines neuen Datensatzes lautet wie folgt:
// Einen Datensatz einfügen
var Contractor=new contractor_master();
Contractor.contractorname = "Super Borewells";
Contractor.contractorgrade = "A";
db.Insert(Contractor);
In der zweiten Zeile des Klassen-Codes möchte ich wissen, wie ein zusammengesetzter Schlüssel (ContractorName + ContractorGrade) angegeben werden kann.
Zweitens wird kein Datensatz eingefügt, weil es eine ID-Spalte erwartet. Auch wenn ContractorId IDENTITY ist, ist es kein Primärschlüssel.
Es wird kein neuer Datensatz EINGEFÜGT und es tritt ein Fehler auf, weil 0 in die IDENTITY-Spalte eingefügt wird.