2013-01-18 34 views
0

我想实现一个IsComplexType()方法,它检查实体的给定属性是否为ComplexType。如何确定属性是ComplexType?

在阅读Entity Framework的源代码后,我发现它已经在“Helper”类中实现了一个,但该类是“internal”,所以我不能在Entity Framework项目之外使用它。

我想知道是否有一个公共API在实体框架,使我能够做到这一点。如果不是,我该如何执行它?

+0

你想使用IsComplexType()从哪个上下文?您是否试图在模型中为代码第一个自定义约定执行此操作,或者这是否将成为主程序的一部分? – lukew

+0

@lukew我正在实现一个名为“DescriptionInitializer”的DatabaseInitializer,它从属性读取DescriptionAttribute,并将descrition设置为映射到该属性的列。使用ComplexType时,我必须深入该类型以获取列的描述。 – RongieZeng

+0

@lukew我实现的另一个DatabaseInitializer是“IndexInitializer”,有了它,我可以使用DataAnnotation创建索引,并且还需要检查属性类型。 – RongieZeng

回答

3

试试这个:

 var dbContext = new DbContext("ConnectionString"); 
     var complexType = dbContext.Entry(TEntity).ComplexProperty("ProperyName"); 
     if (complexType != null) 
     { 
      // This is a Complex Type 
     } 

希望这有助于。