I have a class, suppose it’s called EntityModel, and I want to make three different tables with the same columns, as defined in EntityModel. Let’s call the tables tbPast, tbPresent and tbFuture. I want also to access them separetely in the Entity DbContext:
using (var db = new MyContext())
{
var element = db.Past.Find(id);
db.Past.Remove(element);
db.Present.Add(element);
db.SaveChanges();
}
The main purpose of having three tables is performance: the table will have millions of rows, and the most important is the Present, with dozens of rows. Most queries will be made in the Present table.
What is the best way to do this? Implementing three models with the same properties doesn’t seem right for me.
I’m using Entity Framework, with the Code First approach, along with ASP.NET MVC 3.
You can’t use the same model to generate separate tables w/ EF code-first. If you need to have some sort of grouping, use a
Discriminatorfield and assing it any of the values:PastPresentFuture.Edit:
Similar effect can be achieved through table-per-concrete type inheritance. Thus each type will have it’s own table and can share most (if not all) of the fields.