One of the things I learned from revisiting C#II's project, eDevices was that planning out what your database schema is going to look like is pretty key to determining how easy your life is going to be down the road. In C#II, the focus appeared to be on breaking up the bigger project into smaller iterations that were built on organically--which was GREAT until I tried to implement a feature that hadn't been planned for in an earlier iteration, one that required changing one of the fields on the Policy entity.
I managed to break all functionality because the Policy entity no longer matched what was expected, and I had to completely redesign 90% of my application's business logic to account for this new feature. This led to further frustration when I realized that I didn't properly manage my code first migrations for this series of changes--again, they happened organically during the class without any thought or discussion as to how to go back and make changes.
Had this project been planned out with a full list of requirements from the start and THEN broken into bite-sized iterations (and the class took this approach for valid reasons I'm not going to digress into, lest this analysis is viewed as criticism), much pain and suffering could have been avoided in later iterations. That's the approach I intend to take on this project--end goal clearly defined, then split into manageable pieces that are configured to fit together from the get-go.
Knowing that my EntityFramework layer is going to be the base of my application's pyramid, so to speak, I felt it important to really define what each entity would look like and how they would be interacting with each other. I won't actually rush out and code all of these objects at once, but having the schema I want already defined means I won't be creating an entity class off the cuff that I remember 4 iterations from now needs to be totally different in order to implement a new functionality.
I managed to break all functionality because the Policy entity no longer matched what was expected, and I had to completely redesign 90% of my application's business logic to account for this new feature. This led to further frustration when I realized that I didn't properly manage my code first migrations for this series of changes--again, they happened organically during the class without any thought or discussion as to how to go back and make changes.
Had this project been planned out with a full list of requirements from the start and THEN broken into bite-sized iterations (and the class took this approach for valid reasons I'm not going to digress into, lest this analysis is viewed as criticism), much pain and suffering could have been avoided in later iterations. That's the approach I intend to take on this project--end goal clearly defined, then split into manageable pieces that are configured to fit together from the get-go.
Knowing that my EntityFramework layer is going to be the base of my application's pyramid, so to speak, I felt it important to really define what each entity would look like and how they would be interacting with each other. I won't actually rush out and code all of these objects at once, but having the schema I want already defined means I won't be creating an entity class off the cuff that I remember 4 iterations from now needs to be totally different in order to implement a new functionality.
Comments
Post a Comment