如何从db获取列名?
目前,我正在使用ado.net实体模型通过linq-sql与db进行交互。我已经搜索了StackOverflow,我收到了一些有用的帖子,但我尝试过的任何内容都没有。
喜欢这篇文章:
How do I return the column names of a LINQ entity
我尝试了Conrad Frix的回复,但他们没有用。无论如何,我不确定他的意思是“Datacontext”。那是实体吗?
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);
这不起作用,因为table为null
答案 0 :(得分:2)
你可以这样做......
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。