gpt4 book ai didi

c# - Entity Framework - 如何获取列?

转载 作者:IT王子 更新时间:2023-10-29 04:49:03 26 4
gpt4 key购买 nike

我希望获得列名称、类型以及该列是否是 Entity Framework 中表对象的 PK 的列表。

我如何在 C# (4.0) 中执行此操作(理想情况下是通用的)?

获胜的答案将是高效且最重要的是通用的答案。

最佳答案

知道了 - 我使用了基于 linq 的反射查询:

IEnumerable<FieldList> properties = from p in typeof(T).GetProperties()
where (from a in p.GetCustomAttributes(false)
where a is EdmScalarPropertyAttribute
select true).FirstOrDefault()

已排序!感谢大家的建议。

仅供引用 - 我正在使用 LINQ、动态 lambda 表达式创建一个动态 where 子句来构建例如默认情况下会自动搜索所有列的搜索。但我还需要列名来验证,因为我将允许它被覆盖,并且这些调用将通过 javascript ajax post 完成,其输入不可信任 - 因此需要验证列名。

我使用上面的方法将结果放入一个自定义对象中,该对象具有名为 FieldName、FieldType、PrimaryKey 的属性。 Ta daaa.

进一步自定义

IEnumerable<FieldList> properties = from p in typeof(T).GetProperties()
where (from a in p.GetCustomAttributes(false)
where a is EdmScalarPropertyAttribute
select true).FirstOrDefault()
select new FieldList
{
FieldName = p.Name,
FieldType = p.PropertyType,
FieldPK = p.GetCustomAttributes(false).Where(a => a is EdmScalarPropertyAttribute && ((EdmScalarPropertyAttribute)a).EntityKeyProperty).Count() > 0
};

关于c# - Entity Framework - 如何获取列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6056597/

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