我正在使用c#,wpf和mvvm。
在我的数据网格中,每一行在最后一个单元格中都有一个ListBox,其中包含与此行相关的文档,我将其称为句点。
用户可以为每个时段添加文档。
我想为每个文档显示文件类型图标(16x16)和文档名称。
文件类型图标让我有点头疼。
我不确定我是否应该在数据库中保存每个文件类型图标,如.DOC,因为一天有10个句点,每个都有2个.DOC文件附加,因此我在数据库中保存了20个图标,这些图标是19倍冗余。 ..
我的用户将附加的大部分内容都是Office文件类型,例如.xls,.doc,.pdf,images,zip / 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保存的优点/不足:)
答案 0 :(得分:0)
始终避免在数据库中保留二进制图像。查询和转换是头脑。这个特定选项的最佳方法是将所有ur pics保存为resourcess并将资源名称保存到数据库中。你可以通过保留资源名称的枚举并将onrowdatabound上的(eNUM.PARSE)名称解析为源绑定到数据网格行的单元格模板。单元格可能包含图像作为模板内容。
答案 1 :(得分:0)
如果您的文件类型很少且文件数量很多,那么将文件类型存储为file_type_master类型的数据库或XML文件,并在任何地方使用它时加载一次都会更好。但是在装载和使用方面存在良好的折衷时,它仍然很好。否则你也可以做一些缓存。