EntityBuilderの拡張
次はフォーリンキーに対応したいです。
create table Employer ( id integer primary key, name varchar(32) ); create table Employee ( id integer primary key, name varchar(32) ); create table EmploymentPeriod ( id integer primary key, employeeID integer, employerID integer, constraint EmploymentPeriodFK0 foreign key (employerID) references Employer constraint EmploymentPeriodFK1 foreign key (employeeID) references Employee, );
こんなテーブル定義があった場合は、以下のようなクラスを生成させる。
// テーブルと1対1 class Employer { int _id; public int ID { get { return _id; } set { _id = value; } } string _name; public string NAME { get { return _name; } set { _name = value; } } } // テーブルと1対1 class Employee { int _id; public int ID { get { return _id; } set { _id = value; } } string _name; public string NAME { get { return _name; } set { _name = value; } } } // テーブルと1対1 class EmploymentPeriod { int _id; public int ID { get { return _id; } set { _id = value; } } int _employerID; public int EMPLOYERID { get { return _employerID; } set { _employerID = value; } } int _employeeID; public int EMPLOYEEID { get { return _employeeID; } set { _employeeID = value; } } } // 結合テーブルクラス // クラス名は自分と参照テーブルを繋げたものにする class EmploymentPeriodEmployerEmployee { int _id; public int ID { get { return _id; } set { _id = value; } } // フォーリンキーから自動生成 // プロパティはフォーリンキー名 // 無名の場合は、参照先テーブル名 Employer _employer; [Relno(0), Relkeys("EMPLOYERID:ID")] public Employer EmploymentPeriodFK0 { get { return _employer; } set { _employer = value; } } // 同様 Employee _employee; [Relno(1), Relkeys("EMPLOYEE:ID")] public Employee EmploymentPeriodFK1 { get { return _employee; } set { _employee = value; } } }
今月中に何とかしたいなぁ。