DataClasses   otázka

VB.NET

Dobrý den,

mám rozpracovaný projekt, kde využívám sql databázi, ale dnes jse narazil na jeden problém, a to, že jsem potřeboval změnit jednu tabulku, v sql management studiu, jsem ji předělal, pak jsem ve visual studiu pomocí Data Source Configuration Wizard, odstranil neexistující sloupce, a přidal nové, ale v DataClasses.dbml se to nezmění, pokud to v něm změním, tak mi již moje aplikace pokaždé nefunguje a hlásí mi to chybu:

An unhandled exception of type 'System.NullReferenceException' occurred in Bakalarka.exe

Additional information: Object reference not set to an instance of an object. u kódů

Me.NameTableAdapter.Fill(Me.DatabaseDataSet.Name)

Předem děkuji za pomoc

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

Tohle jsou přesně ty problémy, které vznikají při použití designéru všude a na všechno (LINQ to SQL a další datové objekty) a při změnách kódu vytvořeného designérem... Proto už po milionté upozorňuji: NEDĚLEJTE TO TAK.

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

Dík, mno jo, ale tak to já dřív nevěděl :-D :-( a ted nwm jak z toho :-((( a docela mi u toho projektu hoří čas a už je to docela dost rozsáhlý :-( :-( :-( (bakalářka)

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

Doporučuji psát si spojení s databází a posílání dotazů ručně. Při použití designeru se nemůžu zbavit pocitu že nad kódem nemám vůbec žádnou kontrolu.

Kromě toho že kód bude dělat přesně to co chcete nebudete mít problém právě v takovýchto případech když potřebujete něco změnit. A je to doslova jen pár řádků navic.

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

Jj, pár řádků navíc, ale to nevim jak :-( jako postaru to dám dohromady, ale abych mohl využívat linq, tak to nwm jak udělat bez designeru. Nemohl by jste mě prosím někdo nasměrovat? :-)

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

Pokud jste si naklikal LINQ to SQL a pod "rukama" mu změníte databázi, musíte ty tabulky v LINQ to SQL designeru vymazat a přetáhnout je z databáze znovu, aby se to přegenerovalo.

Problém je, že LINQ to SQL designer si to nacacheuje, takže přesvědčit ho, aby to zapomněl, je docela složité (zvláště u databázových procedur). Tento postup fungoval mě:

1) Smazat tabulky a procedury z LINQ to SQL designeru (ne z databáze!)

2) Uložit a zavřít designer

3) Pokud jste v Server Exploreru připojen k databázi, odpojit se od ní

4) Rebuild

5) Otevřít znovu designer LINQ to SQL.

6) V Server Exploreru připojit k databázi.

7) Natahat tabulky a storky do designeru.

8) Uložit

9) Rebuild

Z následujícího postupu plyne, že nejlepší je prvně myslet, a pak až programovat. Pokud děláte tak velkou věc jako bakalářku a za běhu měníte strukturu databáze, tak jste podcenil analýzu. Nevím, jak se to na vaší škole kontroluje, ale my před bakalářkou nebo ročníkovým projektem musíme odevzdat přesnou specifikaci, která mimo jiné obsahuje strukturu databáze. Tohle má být prostě rozmyšlené ještě před tím, než začnete něco dělat.

To, co psal o designeru pan Linhart, je míněno trochu jinak - když si něco vygenerujete v designeru, pak to neměňte v souborech s příponou Designer.cs, které se mohou (a taky to udělají) kdykoliv přegenerovat znovu a změny se v lepším příapdě ztratí, v horším něco někde jinde přestane fungovat.

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

Jj, děkuju, vyzkouším, mno ono jsem to měl vcelku dobře rozvrhnutý, ale od 1.1.2009, se malinko změnili zákony a vyžaduje to zásah do struktury databázových tabulek, tak že mi nic jiného nezbývá.

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

Tak bohužel, tento posutp u mě nefunguje :-( pač asi ten rebuild neproběhne v pořádku. Napiše to Rebuil all failed.

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

A co to píše za chybu? Není to nějaká chyba někde jinde v projektu?

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