gpt4 book ai didi

c# - 获取给定 EntityType 的导航属性

转载 作者:太空狗 更新时间:2023-10-29 17:41:58 26 4
gpt4 key购买 nike

我正在使用 VS2010、EF4.0。需要如下功能。

private string[] GetNaviProps(Type entityType)//eg typeof(Employee)
{
NorthwindEntities en = new NorthwindEntities();
//here I return all Properties only for example
return entityType.GetProperties().Select(p=>p.Name).ToArray();
//should return Orders,Territories...
}

我检查了this ,但 IObjectContextAdapter 似乎在 EF6.0 和 .net4.5 中。我试着像这样替换它

var workspace = en.MetadataWorkspace;

所以它可以编译,但是在第3行抛出异常。
有帮助吗?

最佳答案

您可以过滤 GetProperties 结果以仅获取实现了 ICollectionIEnumerable 的结果。但是,您应该记住 string 实现了 IEnumerable,因此您必须添加额外的检查以确保不返回 string 属性。

return entityType.GetProperties()
.Where(p => typeof(IEnumerable).IsAssignableFrom(p.PropertyType) && p.PropertyType != string)
.Select(p => p.Name)
.ToArray();

更新

您也可以更改 Where 谓词来比较 namespace 。它还返回 1:1 导航属性:

private static string[] GetNaviProps(Type entityType)//eg typeof(Employee)
{
return entityType.GetProperties()
.Where(p => (typeof(IEnumerable).IsAssignableFrom(p.PropertyType) && p.PropertyType != typeof(string)) || p.PropertyType.Namespace == entityType.Namespace)
.Select(p => p.Name)
.ToArray();
}

关于c# - 获取给定 EntityType 的导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20823028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com