私の状況の概要を簡単に説明します。
私はシリアル化に大きく依存するN層アプリに取り組んでいます。オブジェクトは主にシリアル化された方法でデータベースと対話し、オブジェクトとコレクションはストアドプロシージャ内からXMLとして挿入、更新、読み取りされます。
小さなデータクラスの中には、ExecuteNonQuery、Readerなどを使用してデータを操作する方が簡単なものもありますが、問題が発生しました。
データは、ExecuteNonQueryを使用し、パラメーターを使用してデータベースに挿入されます。挿入されるデータの一部は、FlagAttributeがアタッチされた列挙型(DBにintとして格納される)であるプロパティです。次のような列挙型の場合:
<Flags()> _
Public Enum Fruit As Integer
<Description("None"), XmlEnum("0")> None = 0
<Description("Apple"), XmlEnum("1")> Apple = 1
<Description("Banana"), XmlEnum("2")> Banana = 2
<Description("Orange"), XmlEnum("4")> Orange = 4
End Enum
読み戻される値は、1、3、7などの整数値であり、ExecuteXmlReader(XmlReaderオブジェクトの入力)を使用するクラスのより大きなグループの一部として読み戻されるときに、シリアル化を使用せずにデータベースに挿入される場合があります。次に、逆シリアル化する必要があります。たとえば、7の場合、「インスタンス検証エラー:「7」はFruitの有効な値ではありません」のようになります。これは、次の形式でシリアル化されることを想定しているためです。
<fruitOptions>1 2 4<fruitOptions>
全体として、少し混乱します。データベースに1、2、4形式で格納することで回避できる可能性がありますが、残念ながら、現在のint型ではありません。
誰かがこれについて何か考えを持っていますか?