I’m doing my first project with EF and I’m planning to go the code-first model. I’m trying to find a bit of guidance about handling a fairly classic “lookup table” scenario.
I’m dealing with a pretty canonical situation where I’ll be persisting address data. So, I have a simple address DTO…
public class Address
{
public int Id { get; set; }
public virtual string StreetAddress1 { get; set; }
public virtual string StreetAddress2 { get; set; }
public virtual string City { get; set; }
public virtual string State { get; set; }
public virtual string ZipCode { get; set; }
}
In the state property, I’d like to store the standard US two-letter state code. For validation purposes, I’d like to have a standard one-to-many foreign key relationship between the resulting Address table and a fairly standard state lookup table. That table would probably contain an ID, the two-letter code, and a third column to contain the full state name.
I would expect to use this state lookup table to populate and state drop-down style boxes, etc and also act as a validation to the State filed in the address entity. Fairly common stuff. So, I have a couple of simple (I hope) questions.
- Do I need to create an entity to represent the State entity just to
have EF create the table, or can I just include the table creation
process in a DBCreation strategy and seed it there? - Would it make sense to create that entity, just to use as “view
models” for any place where I want to display a “state-picker” - I really only want to store the two-letter state code in the address
entity, but does this make sense or does it make more sense to just
make it a navigation property to a state entity and then display?
I struggled a bit with articulating my point here, so if I’m not clear, feel free to ask for more detail.
Thanks in advance.
appropriately in the UI?
With code first EF will create the table, but you can populate it in the
Seed()method.in your POCO or view model – depending on what your view uses. Then in Views/Shared/EditorTemplates, add a partial view StatePicker.cshtml, which would looke something like
in combination with
in your view.