从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);

这不起作用,因为表是空的

从ado.net实体模型中获取列名

你可以这样做…

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。