型付DataSetのテーブルのカラムの型を、int ではなく、独自の列挙型にするには、2つの方法がある。

ひとつは、型付DataSetの定義を行う場合に列のデータ型を列挙型に指定する方法。
これは、デザイナー画面で、DataTypeプロパティの値を System.Int32 などから、独自の型 Gushwell.Genderなどを指定してあげればよい。
ドロップダウンリストには現れないので、手入力になる。

もうひとつは、partial クラスを使う方法。

型付DataRowクラスの partialクラスを作成し、その中に、列挙子用のプロパティを定義し、データ変換コードを書けばよい。

例えば、Gender というカラムがあった場合、

public partial class MyRow : System.Data.DataRow {
public  Gender EnumGender {
get  {
try  {
return (Gender)(this.Gender);
} catch {
return Gender.Unknown;
}
}
set {
this.Gender = (int)value;
}
}
}


のように書けば良い。C#からは、Genderカラムではなく、EnumGenderカラムを参照するようにする。こうすることで、間接的ではあるが、DBのカラムを列挙型として扱うことができる。

後者のやり方は、try-catchで例外処理を記述できるのがメリット。