chyba při editaci LINQ (SubmitChanges())   otázka

ASP.NET WebForms

Dobrý večer.

Pro editaci učitelských rolí využívám DropDownList, který si natáhne možné role a pak podle výběru role ji přiřadí danému uživateli :

    protected void RoleDropDownList_TextChanged(object sender, EventArgs e)
    {

        DropDownList ddl = (DropDownList)sender;
        GridViewRow row = (GridViewRow)ddl.NamingContainer;
        string username = (string)UsersGridView.DataKeys[row.DataItemIndex].Value;
        var mujUser = dc.UsersInRoles.Single(m => m.UserName == username.ToString());
        mujUser.RoleName = ddl.SelectedValue.ToString();
        dc.SubmitChanges();
        Response.Redirect("~/Admin/Users.aspx");

    }

Na ASP.NET Development Serveru VS08 vše funguje bezproblémů, ale jakmile celý web běží na hostingu(odzkoušeno na ASPONE a QSH), dostanu chybové hlášení http://akri.aspone.cz/chyba.htm . Už jsem zkusil snad vše ale nemůžu přijít na to, proč je tam tento problém.

Můžete mi poradit, kde by mohla být chyba ?

Předem moc děkuji za jakoukoliv radu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkoušíte to se stejnými daty, nebo s různými?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jsou to naprosto identická data. Celou složku WebSite nakopíruju na hosting, kde jen ve Web.Config upravím ConnectionStringy podle požadavků hostingu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vypadá to tak, že na ostré databázi máte nějaký sloupec v jiném datovém formátu (velikost, omezení). Vyjeďte si data z tabulky INFORMATION_SCHEMA.COLUMNS a porovnejte je proti ostré databázi.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den.

Díky za radu. Databáze jsou sice stejné i po provedení Compare Schema ale dostal jsem se díky tomu k jiné závadě, která mi asi způsobuje problém. Pomocí SQL Server Profileru jsem si odchytil, co vlastně přesně posílám do databáze po provedení dc.SubmitChanges() a dostal jsem tohle:

exec sp_executesql N'UPDATE [dbo].[UsersInRoles]
SET [RoleName] = @p3
WHERE ([HashId] = @p0) AND ([UserName] = @p1) AND ([RoleName] = @p2)',N'@p0 int,@p1 varchar(5),@p2 varchar(5),@p3 varchar(13)',@p0=14,@p1='hanak',@p2='guest',@p3='administrator'

Problém nastává v tom, že tabulka je definovaná pro varchar(100) a ne pro hodnoty, které si vytvoří LINQ dotaz sám, tím myslím varchar(5), varchar(5), varchar(13). Jakmile se pokusím provést tuto úpravu s vygenerovaným LINQ dotazem přes Query, nejde to, ale jakmile provedu doraz s upraveným výrezem na varchar(100), vše proběhne vpořádku.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tím to určitě není, SQL Server umí porovnávat varchary různé délky, tohle by mu vadit nemělo.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Přepsaný kousek website včetně databáze jsem umístil na http://akri.aspone.cz/Data/MujProjekt.ra... , takže pokud se někdo budete hodně nudit, můžete se na to mrknout jestli tam nenajdete, kde by mohl být problém.

Předem moc díky

PS:Kopie stránek je také nahraná na http://akri.aspone.cz, kde se zobrazuje i daný problém po změně role uživatele.

Jo a ještě maličkost na konec. Jakmile jsem to přepsal do ASP.NET 4.0 a nahrál na hosting ASPONE, který tuto technologii pro testování podporuje(http://raskas.aspone.cz), vše jede naprosto vpořádku :(

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback