我使用的是c#,wpf和mvvm。
在我的数据网格中,每一行的最后一个单元格中都有一个ListBox,其中包含与此行相关的文档,我称之为句点。
用户可以将文档添加到每个期间。
我希望为每个文档显示文件类型图标(16x16)和文档的名称。
文件类型图标让我有点头疼。
我不确定我是否应该在数据库中保存每个文档文件类型的图标,如.DOC,因为一天可能有10个周期,每个周期有2个.DOC文件,因此我在数据库中保存了20个图标,它们是冗余的19倍…
我的用户会附加的大多数东西都是办公文件类型,比如.xls,.doc,.pdf,图像,压缩/rar,我猜就是这些。
另一个在技术上更先进的方法是将唯一的文件类型图标保存为XML文件中编码的base-64字符串,并将文件类型扩展名保存为键/值对。
xml在应用程序启动时在字典中加载一次
<FileTypes>
<Extension ext="doc" base64string="ff5598sdfusd98fjs9df98sd9f" />
<Extension ext="docx" base64string="ff5498sdfusd98fjs9df98sd9f" />
<Extension ext="xls" base64string="ff9548sdfdsfdfusd98fjs9df98sd9f" />
<Extension ext="xlsx" base64string="ff98sfdfddfusd98fjs9df98sd9f" />
<Extension ext="pdf" base64string="ff98fdfdsdfusd98fjs9df98sd9f" />
<Extension ext="zip" base64string="ff98dfdfsdfusd98fjs9df98sd9f" />
<Extension ext="rar" base64string="fffdf98sdfusd98fjs9df98sd9f" />
</FileTypes>每当有文档进入数据库时,我都会检查文件名中的文件扩展名,并检索字典以获得该文件的base64字符串。我仍然可以以某种方式为文件类型base64字符串实现缓存机制,这样我就不会在每次获取.doc文件时都对它们进行解码……
也许你有一个完全不同的/更好的?想法,请让我知道或建议数据库/xml保存的优点/缺点:)
发布于 2011-03-22 01:14:49
始终避免将二进制图像保存在数据库中。查询和转换是额外的开销。此特定选项的最佳方法是将所有图片保存为资源,并将资源名称保存到数据库中。您可以通过保留资源名称的枚举,并将onrowdatabound上的(eNUM.PARSE)名称解析为数据网格行的单元格模板的源绑定。单元格可以包含作为模板内容的图像。
发布于 2011-06-24 20:02:14
如果你有很少的文件类型和大量的文件,最好将文件类型存储为file_type_master类型的数据库或XML文件,然后加载一次,然后到处使用它。但是,当在加载和使用方面进行了良好的权衡时,它仍然有效。或者你也可以做一种缓存。
https://stackoverflow.com/questions/5368046
复制相似问题