我如何获得" NameOf"在外键上?

时间:2017-04-24 21:41:55

标签: c# entity-framework reflection

尝试提取外键属性中包含的属性的属性时遇到了困难。为了说明,我在某个类中有这些属性

[Required(ErrorMessage = "Please enter value.")]
public long ObjectCatalogId{ get; set; }

[ForeignKey(nameof(ObjectCatalogId))]
public ObjectCatalog ObjectCatalog { get; set; }

我想通过查看ObjectCatalog属性上的属性来找到一种获取ObjectCatalogId属性的方法。我希望这意味着提取外键的名称(即ObjectCatalogId),然后在ObjectCatalogId和ObjectCatalog类中查找该属性,并使用反射来获取属性。

我的问题是如何在外键上获取名称?

 attribute.GetType().Name

不起作用。此外,有更有效的方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:2)

问题在于,当我从属性中获取属性时,我将其视为Attribute而不是ForeignKeyAttribute。所以当我改变了

Attribute attribute =  Property.GetCustomAttribute(typeof(ForeignKeyAttribute));

ForeignKeyAttribute attribute = (ForeignKeyAttribute) Property.GetCustomAttribute(typeof(ForeignKeyAttribute));

我只是使用

得到了我想要的名字
string name = attribute.Name;