1

私の状況の概要を簡単に説明します。

私はシリアル化に大きく依存する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型ではありません。

誰かがこれについて何か考えを持っていますか?

4

1 に答える 1

0

DBAまたは使用しているストアドプロシージャの作成者に問い合わせる必要があります。このフィールドは列挙型ではなく、リストであると指定されているようです。

于 2010-01-21T23:20:55.297 に答える