.Net CF strongly typed DataTable a case-insensitive PK
mam takovy problem - pomoci xsdcf mam nekolik vygenerovanych strongly typed DataTable a u tabulek, kde primarni klic tvori String sloupec, mam problem s tim, ze se PK chova case-insensitive...
tj. nemuzu mit v takove tabulce najednou zaznamy s ID napr. "A" a "a" zaroven... pokud to tak v databazi mam, tak pri zavolani DataAdapterXY.Fill(DataTableXY) dojde k vyjimce "ConstraintException:Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.".
Pokud se pokusim o neco ve stylu:
[CODE]
//ITEMTYPES(ID String, Descr String)
myDS.ITEMTYPES.AddITEMTYPESRow("A", "AAA");
myDS.ITEMTYPES.AddITEMTYPESRow("a", "aaa");
[/CODE]
tak dostanu pro zmenu pri vlozeni druheho radku: "ConstraintException:Column 'ID' is constrained to be unique. Value 'a' is already present.".
nesetkal jste se s tim nekdo, resp nezna nekdo reseni, jak donutit PK v DataTable, aby se choval case-sensitive?
tj. nemuzu mit v takove tabulce najednou zaznamy s ID napr. "A" a "a" zaroven... pokud to tak v databazi mam, tak pri zavolani DataAdapterXY.Fill(DataTableXY) dojde k vyjimce "ConstraintException:Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.".
Pokud se pokusim o neco ve stylu:
[CODE]
//ITEMTYPES(ID String, Descr String)
myDS.ITEMTYPES.AddITEMTYPESRow("A", "AAA");
myDS.ITEMTYPES.AddITEMTYPESRow("a", "aaa");
[/CODE]
tak dostanu pro zmenu pri vlozeni druheho radku: "ConstraintException:Column 'ID' is constrained to be unique. Value 'a' is already present.".
nesetkal jste se s tim nekdo, resp nezna nekdo reseni, jak donutit PK v DataTable, aby se choval case-sensitive?
ze ja skoro vzdycky najdu odpoved, kdyz se zeptam :D
takze je to tim, ze defaultne je DataTable.CaseSensitive = false a xsdcf bohuzel negeneruje kod s implicitnim nastavenim CaseSensitive na true... kdyby nekdo nahodou vedel, jak xsdcf k nastavovani CaseSensitive donutit, tak prosim napiste...
takze je to tim, ze defaultne je DataTable.CaseSensitive = false a xsdcf bohuzel negeneruje kod s implicitnim nastavenim CaseSensitive na true... kdyby nekdo nahodou vedel, jak xsdcf k nastavovani CaseSensitive donutit, tak prosim napiste...
Ja vim, ze si zadelavam na flamewar, ale pouzivat case-sensitivity ve strukture databaze, tfujky...
nejde mi o strukturu (metadata rozhodne case-sensitive nemam), ale o string data v sloupci, ktery je unique/PK... viz muj prvni prispevek...
XSD k tomu asi nedonutite, ale postupoval bych tak, ze si vytvorite potomka vygenerovane tridy, kteremu nastavite treba v konstruktoru CaseSensitive na true. Pak muzete tridy pregenerovavat a nemusite nastavovat CaseSensitive v puvodni tride...
nastesti se mi to ted podarilo uz v tom xsd... staci pridat do DataSet-elementu atribut msdata:CaseSensitive="true" a plati to pak pro vsechny jeho tabulky...
Jo, pokud mate pristup k xsd, tak to jde. Ja myslel, ze stahujete data napr. z webove sluzby.
//Update: Jeste upresnim, v prvnim prispevku jsem mluvil o nastroji xsd.exe (nebo o tridach v .Net Frameworku, ktere tento nastroj pouziva) a v tomto prispevku o definicnim schematu - XSD.
//Update: Jeste upresnim, v prvnim prispevku jsem mluvil o nastroji xsd.exe (nebo o tridach v .Net Frameworku, ktere tento nastroj pouziva) a v tomto prispevku o definicnim schematu - XSD.