主檔修改會重新產生附屬檔,導致無法手動擴充屬性(如加上驗證屬性 [NotNull]、[Length])。若擴充 XML Schema 則複雜度極高且缺乏型別安全。
[Table]
interface IUser
{
[ID]
[Length("5","16","用戶名長度必須在5-16個字元!")]
string UserName { get; set; }
string BirthDate { get; set; }
string Region { get; set; }
string Remark { get; set; }
}
[Table]
[Serializable]
public class User : Smark.Data.Mappings.DataObject
{
[ID]
public string UserName
{
get { return mUserName; }
set { mUserName = value; EntityState.FieldChange("UserName"); }
}
private string mUserName;
public static Smark.Data.FieldInfo userName = new Smark.Data.FieldInfo("User","UserName");
// ... 其他屬性同理
}
介面屬性直接複製到產生類別,屬性標記保留,享有 IDE 智慧感應與編譯期型別檢查,避免 XML 易錯誤問題。