我正在使用NPoco Micro-ORM 的 2.6.88 版本。
假设我有一个像这样的类层次结构:
[NPoco.TableName("Person")]
[NPoco.PrimaryKey("PersonID", AutoIncrement = false)]
class Person
{
public Guid PersonID { get; set; }
public String Name { get; set; }
}
class Employee : Person
{
public String Department { get; set; }
}
我需要将这个类层次结构映射到使用“每个子类的表”方法设计的数据库。这意味着我有一个包含Person
列PersonID
和的表Name
,并且我有一个Employee
包含列PersonID
和的表Department
。
现在我的问题是如何使用 NPoco 将新员工插入数据库?我试过这样的事情:
Employee myEmployee = new Employee() { PersonID = Guid.NewGuid(), Name = "Employee Name", Department = "TestDepartment" };
NPoco.Database myDb = new NPoco("MyConnection");
using (var transaction = myDb.GetTransaction())
{
myDb.Insert<Person>(myEmployee as Person);
myDb.Insert<Employee>("Employee", "PersonID", false, myEmployee);
transaction.Complete();
}
此代码在第一次插入时失败,因为 NPoco 尝试将 Employee 特定字段插入到 Person 表中。
我该如何正确实施?