0

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テーブルがあり、列とを持つテーブルがあることを意味します。PersonIDNameEmployeePersonIDDepartment

私の質問は、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 が従業員固有のフィールドを Person テーブルに挿入しようとするため、このコードは最初の挿入で失敗します。

これを正しく実装するにはどうすればよいですか?

4

1 に答える 1