Search code examples
c#.netentity-frameworkentity-framework-5ef-database-first

Entity Framework Database first How to alter entities to make them derive from a base class


I have a database already full of tables with data in them. What I have seen is that all tables have 5 columns in common:

  • Id-long, key
  • IsDeleted, bit
  • DateDeleted, SmallDatetime
  • LastUpdated, SmallDatetime
  • LastUpdatedUser, nvarchar

Now, there are some common operations that are done based on those fields which currently are replicated everywhere

What I want is to create a base class containing just these common attributes and the methods done to them and make every other entity derive from this.

I don't need or want to have this base entity on the database per se, this is just something I want to help the coding part.

The issue is this is Database first, I cannot alter the database so all I have to work with are the POCO classes and the EDMX.

How can i achieve this?


Solution

  • What you are looking for is something similar to TPH (http://msdn.microsoft.com/en-us/data/jj618292.aspx)

    I don't think this will work for you however, as you have multiple existing tables.

    One of the possible solutions is:

    1. Create a base class called "BaseModel" (or something like that)
    2. Add those properties as abstracts to force them to be overridden
    3. Create a method in that base class to populate those fields, or create a helper which takes BaseModel, IsDeleted,LastUpdated, LastUpdatedUser as a parameter and update the model.
    4. Extend the partial classes generated by the model.tt file and inherit from the BaseModel class.

    Thanks, Dave