2009-06-05 36 views
3

Zum Beispiel ändere ich eine Spalte in einer Tabelle nicht null von Null.Wenn ich eine Datenbank ändere, woher weiß ich, was entfernt und in den LinqToSql O/R Designer in Visual Studio geschrieben werden muss?

Ich muss dann die Tabelle löschen und neu laden. Dieser Teil ist ziemlich klar.

Was ist mit Sichten, Funktionen und gespeicherten Prozeduren, die auf die Tabelle zugreifen, insbesondere die Spalte in der Tabelle?

Ich habe versucht, Diffs gegen die von SQLMetal erzeugten Dateien mit einigem begrenzten Erfolg zu versuchen, aber sogar damit ist es ziemlich unklar.

Ich weiß, dass es mindestens ein kommerzielles Tool gibt, das behauptet, dieses Problem anzugehen, aber ich suche nach etwas freiem.

Wie gehen Menschen mit diesem Problem um?

Antwort

0

+1 auf die Frage.

Aber was ist schlecht an der Verwendung eines kommerziellen Tools, wenn es das Problem löst? Denn wenn Sie eine Stunde pro Woche für das manuelle Anpassen von Änderungen aufwenden, anstatt auf einen Knopf zu drücken, der alles für Sie erledigt, dann werden sich die Lizenzkosten für die Nutzung eines kommerziellen Tools in kürzester Zeit amortisieren. All tools that address this issue kosten einen Bruchteil einer Visual Studio-Lizenz, haben kostenlose Testversionen und der Preis ist für die meisten Entwickler nicht mehr als eine Stunde Arbeit. Nur meine 2 Cent.

Das sagte, ich stimme zu, es wäre ordentlich, wenn diese Funktionalität kostenlos verfügbar wäre. Ich habe versucht, dies MSFT oft vorzuschlagen, aber das scheint sie nicht zu interessieren. (wie in: sie antworten nicht einmal zurück ... :))

+0

Aus irgendeinem Grund können sich viele Projekte, denen ich angehöre, 100 $/h Auftragnehmer leisten, aber sie können es sich nicht leisten * irgendwelche * Software, Komponenten, Werkzeuge oder irgendetwas anderes zu kaufen was auch immer anderer lahmer Grund). Dies macht Dinge wie LinqToSql attraktiv, da es kostenlos und out of the box ist. Ich kann die Budget-Schergen, die bei diesen Unternehmen auftreten, nicht rechtfertigen, ich kann nur versuchen, sie zu umgehen. In Bezug auf LinqToSql warte ich immer noch auf ein kostenloses Tool, um dies zu tun. In der Zwischenzeit gehe ich in Richtung NHibernate als Lösung. –

+0

Ah, das bringt ein interessantes Thema, dass ich Spuren von "von außen" gesehen habe. Ich denke, es ist am häufigsten bei großen Unternehmen - das Bureacrazy (vorsätzliche Rechtschreibfehler :)) ist so kompliziert, so können Entwickler nicht die Werkzeuge bekommen, die sie benötigen, ohne stundenlang Formulare auszufüllen usw. Es wäre nett, eine Reseller-Lösung (z ein "Toolbelt" -Paket, in dem Entwickler ihre eigenen Werkzeuge/Komponenten von einer Vielzahl von Lieferanten für bis zu einem vorbestimmten Betrag auswählen können ($ x/dev/year, oder so, ...). – KristoferA

0

Es scheint, dass Sie eine Menge Geschäftslogik in Ihre SQL-DB setzen, anstatt sie in der App selbst zu behalten. Versuchen Sie, ein DDDapproach mit einem DomainModel adoptieren - dies sollte viel von der Arbeit, die diese SPs und Ansichten aus der db sind zurück in die Anwendung, wohin sie gehören bewegen. Dann sollte Ihre Datenbank nur für persistente Daten verwendet werden und daher in Tabellen geändert werden, um im L2S-Designer nur eine sehr kurze Zeit für Aktualisierungen zu benötigen.

+0

Im Allgemeinen bin ich damit einverstanden, Geschäftslogik nicht durch gespeicherte Prozeduren usw. in die Datenbank zu packen. Das bedeutet jedoch nicht, dass es immer die richtige Entscheidung ist oder dass es immer möglich ist. Für die Zwecke dieser Frage gehen Sie bitte davon aus, dass das Verschieben der Geschäftslogik aus der Datenbank keine Option ist. –

+0

Dann, soweit ich sehen kann, müssen Sie die jeweiligen Entitäten (db-Objekte, die von Ihrer Tabelle geändert werden) in Ihrer dbml-Datei mit dem Designer jedes Mal entfernen/hinzufügen. Ich mache das oft - normalerweise ist es keine große Sache. Wenn aus irgendeinem Grund ur NULL zu NOT NULL ändern bedeutet, dass Sie verbringen müssen> 1hr aktualisieren dbml dann alles, was ich sagen kann, ist viel Glück. –

+0

Ich habe in VS2010 gehört, dass es eine automatische Synchronisierung für die dbml-Designer geben könnte –