首页 > 解决方案 > C#:只有在运行时才知道数据库名称和列名称时,将数据库映射到类属性

问题描述

我目前有一个与数据库交互和查询数据的程序。但是,我想弄清楚如何获取数据库和配置文件并将表内容映射到我现有的内容。

例如:我有类人。一个人有一个 ID(long)、accountName(string)、Title(string)、firstName(string) 和 lastName(string)。

新连接的数据库具有与 Person 相同的属性,但以不同的方式存储它们。他们可能会调用表 Individual,其中包含 UniqueID(long)、accName(string)、personalTitle(string)、fName(string)、lName(string) 列。

我从配置文件中知道与属性等效的每一列的名称,但我只能在运行时读取它。有没有办法我可以阅读我正在寻找的标题并将它们加载到这些类中,这样我就不必每次都对其进行硬编码?

提前致谢!

标签: c#sqldatabaselinq

解决方案


我想到的最好的想法是跳过任何类型的 ORM,只使用查询字符串:

假设我们以这种方式使用纯 ADO

您的查询字符串将类似于:

string queryString =
        $"SELECT {ConfigurationManager.AppSettings[productColumn]}
 , {ConfigurationManager.AppSettings[PriceColumn]} 
 , {ConfigurationManager.AppSettings[productNameColumn]} 
 from dbo.{ConfigurationManager.AppSettings[ProductTableName]} "
            + "WHERE {ConfigurationManager.AppSettings[UnitPriceColumn]}  > @pricePoint "
            + "ORDER BY {ConfigurationManager.AppSettings[UnitPriceColumn]}  DESC;";

感觉有点奇怪,但要求也是如此。


推荐阅读