包含 Person、Hand、Head 三個類別,完整標註所有 ORM Attribute:
[DataObjectAttribute("Person", "ID", "")]
public class Person {
private int _id; private string _name; private int _age; private string _sex;
private Head _head; private Hand _leftHand; private Hand _rightHand;
[DataFieldAttribute("ID", true)] // Identity
public int ID { get => _id; set => _id = value; }
[SubDataObjectAttribute(SubDataObjectFieldType.Object, "MiniORM", "MiniORM", "Head")]
public Head Head { get => _head; set => _head = value; }
[SubDataObjectAttribute(SubDataObjectFieldType.Object, "MiniORM", "MiniORM", "Hand")]
public Hand LeftHand { get => _leftHand; set => _leftHand = value; }
[SubDataObjectAttribute(SubDataObjectFieldType.Object, "MiniORM", "MiniORM", "Hand")]
public Hand RightHand { get => _rightHand; set => _rightHand = value; }
[DataFieldAttribute("name", "NvarChar")]
public string Name { get => _name; set => _name = value; }
[DataFieldAttribute("age", "int")]
public int Age { get => _age; set => _age = value; }
[DataFieldAttribute("sex", "NvarChar")]
public string Sex { get => _sex; set => _sex = value; }
// 以下兩屬性為介面相容性保留,實作拋出 NotImplementedException
public Hand Hand { get => throw new NotImplementedException(); set { } }
public Head Head1 { get => throw new NotImplementedException(); set { } }
}
[DataObjectAttribute("Hand", "ID", "PersonID")]
public class Hand {
private int _id; private int _personId; private string _name;
[DataFieldAttribute("ID", true)] public int ID { get => _id; set => _id = value; }
[DataFieldAttribute("PersonID")] public int PersonID { get => _personId; set => _personId = value; }
[DataFieldAttribute("name", "NvarChar")] public string Name { get => _name; set => _name = value; }
}
[DataObjectAttribute("Head", "ID", "PersonID")]
public class Head {
private int _id; private int _personId; private string _name;
[DataFieldAttribute("ID", true)] public int ID { get => _id; set => _id = value; }
[DataFieldAttribute("PersonID")] public int PersonID { get => _personId; set => _personId = value; }
[DataFieldAttribute("name", "NvarChar")] public string Name { get => _name; set => _name = value; }
}
關鍵點:
DataObjectAttribute 參數:資料表名、主鍵欄位、外鍵欄位(子物件用)SubDataObjectAttribute 參數:關聯型別、組件名、命名空間、類別名Hand、Head 均含 PersonID 外鍵欄位,對應父表主鍵