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

徘徊边缘 提交于 2019-12-10 14:18:29

问题


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?


回答1:


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




回答2:


  1. Expand the .edmx file and open the Model.tt file (not the Model.Context.tt one)
  2. Find the row where the definition of the "partial class" is being announced.
  3. Should look something like that: <#=codeStringGenerator.EntityClassOpening(entity)#>
  4. Add the inheritance " : YourBaseClass" to the end of the row

Done. Once you save the model you will have all your old entities deriving the base class and when a new one is generated by this template it will derive the base class as well.



来源:https://stackoverflow.com/questions/19021991/entity-framework-database-first-how-to-alter-entities-to-make-them-derive-from-a

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!