【发布时间】:2011-04-11 21:54:58
【问题描述】:
我正在编写一个应用程序,用于对文件进行编目,并为这些文件赋予元数据。相册程序可以很好地与我正在尝试做的事情进行比较。
我正在尝试抽象我的程序与存储文件的文件系统以及存储文件元数据的数据库之间的接口。这是为了允许模拟和单元测试。此外,我希望能够为我的工具创建多个实现,这些实现可以利用不同的数据库格式和/或文件系统结构。
例如,我创建了一个接口IFileSystemAdaptor,用于在文件系统中读取和写入文件和关联的元文件(缩略图和附件)。 IFileSystemAdaptor 的实际实现决定了文件的存储位置和结构。
public interface IFileSystemAdaptor
{
void WriteFileData(string fileName, Stream data);
Stream ReadFileData(string filename);
void DeleteFileData(string filename);
void ClearAllData();
void WriteMetaFileData(string filename, string path, Stream data);
Stream ReadMetaFileData(string filename, string path, Stream data);
void DeleteMetaFileData(string filename, string path);
void ClearMetaFilesData(string filename);
}
所以现在我正在尝试对与数据库的连接做类似的事情。我有一个fairly complex structure of classes,我想在数据库中读写它。我希望能够拥有连接到 SQL Server 数据库的实现,以及另一个使用无服务器数据库(如 SQL Lite)的实现。
如何以支持多种数据库类型的方式抽象类和数据库之间的数据访问层?另外,如何允许我的类中的继承关系反映在数据库中?我更喜欢遵循“class table inheritance”模式的数据库格式(参见我的previous questions之一)。
【问题讨论】:
标签: c# .net orm data-access-layer