繁体   English   中英

制作通用的getter和setter

[英]Making generic getters and setters

我有一个问题,我必须从架构中的所有表中获取列名及其值,并在网格中显示结果。 我已经使用了直接方法,但是我必须实现SqlSiphon结构。 为此,我必须对模式中每个Table的每一列进行getter和setter方法。

我应该使用什么来从表中动态获取列名称及其值。

SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
TABLE_NAME = '" + @Tablename1 + "' AND TABLE_SCHEMA='dbo'"

最佳的动态解决方案是什么? 最好使用List,Dictionay或2d Array之类的东西来提供列名和列值?

一些建议:

  • 对于您要实现的目标,我尚不完全清楚,但可以考虑使用ORM(Linq2SQL,WEF,NHibernate)
  • 在.NET中,代表数据库表的合适类型是DataTable

编辑 :再读几遍后,我想我明白您的要求了-您已经有一个数据库/架构,并且想要自动创建SqlSiphon所需的实体类。 这称为“数据库优先”(与“模型优先”相对)。 但是,从SqlSiphon文档的简短扫描来看,它似乎不支持数据库优先。 这就是为什么要尝试将列放入网格中的原因-以便更轻松地手动为SqlSiphon创建实体类?

Edit2 :请注意,尝试在频繁修改其架构的数据库之上使用ORM会出现问题。 我的下一个猜测是,您正在尝试弄清楚如何在SqlSiphon中创建一个实体类,该实体类可用于检索数据库模式信息,例如表列? 我仍在努力了解您在这里实际要问的问题-也许您可以更新您的问题?

Edit3 :我认为您问题的答案是采用不同的设计方法-像SqlSiphon这样的ORM不能用于检索和修改数据库模式本身。

可能值得退后一步,与其他人如何解决类似问题进行比较。

通常,数据库中的每个表都代表一个实体,每个实体也都有一个类,并且可以使用ORM系统来避免重复工作。 因此,在典型的系统中,您有一个用于客户的表,一个用于发票的表,一个用于发票行的表等,然后是一个代表客户的类,一个发票类,一个发票行类等等。当您以后添加功能(以及可能的列/属性)时,您可以更改类,而不仅仅是查看数据库中的列-您当然可以用XML文档修饰它们并获得Intelisense的好处。

有许多ORM系统,每个都有其优缺点,但是我个人喜欢将LINQ to SQL添加到现有数据模型中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM