从ado.net实体模型中获取列名
本文关键字:获取 实体模型 ado net | 更新日期: 2023-09-27 18:07:14
如何从数据库中获取列名?
目前,我通过使用ado.net实体模型的linq-sql与数据库进行交互。我通过StackOverflow搜索,我得到了一些有用的帖子,但我没有尝试过工作。
喜欢这篇文章:
如何返回LINQ实体的列名
我尝试了康拉德·弗里克斯的回答,但他们没有工作。我不太确定他所说的"数据上下文"是什么意思。那是实体吗?
AttributeMappingSource mappping = new System.Data.Linq.Mapping.AttributeMappingSource();
var model = mappping.GetModel(typeof (AdoModelEntities));
var table = model.GetTable(typeof (TableName));
var qFields= from fields in table.RowType.DataMembers
where fields.IsPersistent == true
select fields;
foreach (var field in qFields)
Console.WriteLine(field.Name);
这不起作用,因为表是空的
你可以这样做…
Object LinqObject = Activator.CreateInstance(tableName, null);
//For each field in the database (or property in Linq object)
foreach (PropertyInfo pi in LinqObject.GetType().GetProperties())
{
String name = pi.Name;
}
LinqObject将是您试图获取名称的表对象。你如何创造它并不重要。这是创建它的一种方式,如果你只有字符串名。
假设您的。dbml有一个名为"Order"的表,那么这样做也可以:
Object LinqObject = new Order();
显然也不需要将表对象的引用声明为object。