实体框架代码首先是继承问题

Jay*_*ena 1 inheritance entity-framework ef-code-first entity-framework-4.1

我有代码第一个实现流动的层次结构,

 BaseContact{
   Public int Id{get;set;}
   public string Name{get;set;} 
//..
 }

 Person:BaseContact{

   public string Designation{get;set;} 
//..
 }
Company:BaseContact{
     public int NumOfEmployees{get;set;} 
//..
 }
Run Code Online (Sandbox Code Playgroud)

我想通过仅使用Id值来识别人或公司?目前我正在使用反思来确定它是个人还是公司.有没有其他方法来识别它而不做太多?

Jam*_*ris 6

在没有看到你如何初始化你的类的情况下,我将假设每个具体类型的方法都有一个表.

您无法仅通过ID执行此操作,因为您不知道ID属于哪个表."人员"表中的ID 2是"公司"中与ID 3不同的实体.仅从ID中识别的唯一实用方法是使用每层次表方法并检查类型描述符.

一些很好的参考资料 http://weblogs.asp.net/manavi/archive/2011/01/03/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-3-table-per-concrete型,TPC-和选择策略,guidelines.aspx

http://weblogs.asp.net/manavi/archive/2010/12/24/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph. ASPX

您还可以使用简单的is语句而不是反射.即if (entity is Company)