I have been using SQL since 1985, so am very comfortable with DB servers.
I see (C#) Code First as yet another fad, that comes and goes. It seems to suit people that have no DBA background. Equally if using Code First and you have not idea what DB you are connecting to eg it might be Mongo later that too is a useful abstraction. Code First does not let itself to Database Diagrams so you can see what is going on.
I would like to know how you promote changes into a production SQL server using code first, where you have no desire to Drop and recreate the DB, unlike using an ALTER TABLE command. I have used tools from Red-Gate that make DB code promotions easy.
So why Code First?
How do you move DB Changes into production?
ORM Code First versa Database First in Production
805 views Asked by Doug Thompson - DouggyFresh At
1
There are 1 answers
Related Questions in C#
- Git init --bare giving error fatal: Out of memory? mmap failed: No such device
- EMACS-Live + Slime error at startup
- Vagrant - Ansible error installing Apache
- Openfire Smack Connection issue
- Error in Ruby on Rails on Ubuntu 14.04
- Django webapp (on an Apache2 server) hangs indefintely when importing nltk in views.py
- C++ string and char* manipulation acting weird
- Data transfer between Ubuntu/Windows to network
- How to upgrade Node js version to 0.12.4 on Ubuntu
- How do I install Intellij on Ubuntu 15.04?
Related Questions in SQL-SERVER
- Git init --bare giving error fatal: Out of memory? mmap failed: No such device
- EMACS-Live + Slime error at startup
- Vagrant - Ansible error installing Apache
- Openfire Smack Connection issue
- Error in Ruby on Rails on Ubuntu 14.04
- Django webapp (on an Apache2 server) hangs indefintely when importing nltk in views.py
- C++ string and char* manipulation acting weird
- Data transfer between Ubuntu/Windows to network
- How to upgrade Node js version to 0.12.4 on Ubuntu
- How do I install Intellij on Ubuntu 15.04?
Related Questions in ENTITY-FRAMEWORK
- Git init --bare giving error fatal: Out of memory? mmap failed: No such device
- EMACS-Live + Slime error at startup
- Vagrant - Ansible error installing Apache
- Openfire Smack Connection issue
- Error in Ruby on Rails on Ubuntu 14.04
- Django webapp (on an Apache2 server) hangs indefintely when importing nltk in views.py
- C++ string and char* manipulation acting weird
- Data transfer between Ubuntu/Windows to network
- How to upgrade Node js version to 0.12.4 on Ubuntu
- How do I install Intellij on Ubuntu 15.04?
Related Questions in MONGODB
- Git init --bare giving error fatal: Out of memory? mmap failed: No such device
- EMACS-Live + Slime error at startup
- Vagrant - Ansible error installing Apache
- Openfire Smack Connection issue
- Error in Ruby on Rails on Ubuntu 14.04
- Django webapp (on an Apache2 server) hangs indefintely when importing nltk in views.py
- C++ string and char* manipulation acting weird
- Data transfer between Ubuntu/Windows to network
- How to upgrade Node js version to 0.12.4 on Ubuntu
- How do I install Intellij on Ubuntu 15.04?
Related Questions in EF-CODE-FIRST
- Git init --bare giving error fatal: Out of memory? mmap failed: No such device
- EMACS-Live + Slime error at startup
- Vagrant - Ansible error installing Apache
- Openfire Smack Connection issue
- Error in Ruby on Rails on Ubuntu 14.04
- Django webapp (on an Apache2 server) hangs indefintely when importing nltk in views.py
- C++ string and char* manipulation acting weird
- Data transfer between Ubuntu/Windows to network
- How to upgrade Node js version to 0.12.4 on Ubuntu
- How do I install Intellij on Ubuntu 15.04?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
The code first approach is something that is really nice to have when you're prototyping applications and "don't care" about the "persistence layer" too much in the beginning. It helps getting quick results in a time when things are not at all well defined yet, because you can always very easily drop and re-create your database of your greenfield project.
Unfortunately, most tools that offer this approach do not really help transitioning from the "greenfield project mode" to the more longterm "legacy project mode" where database migrations are essential. In fact, not only are database migrations difficult to achieve in "client model first" approaches, but more importantly, the likelihood of the database model not being well designed is quite high.
Developers pay a high price for the quick win - as always. It is really not a good idea and a lot of more experienced developers who are used to working with legacy, do agree with you: Go database first, and derive your client (e.g. ORM) models from it.
I have written about this topic here, including the advantage of using client model source code generation.