我正在构建一个.NET应用程序,其中必须为每个用户创建一个单独的数据库。然后通过UI用户可以设置不同的设置,并根据设置数据库可以有不同的格式。无法预定义格式,因为用户可以更改表列,删除一些,添加新表,添加新表。
我想知道构建应用程序的持久层的最佳方法是什么。可以使用Entity Framework或NHibernate来支持动态数据库结构吗?
感谢。
更新
此要求的原因是系统必须能够存储可配置格式的记录。现在我想使用SQL Server,我有一个经验。最初我想使用MongoDB,但似乎它不适合CMS系统,其中关系链接是自然的。那些其他系统如RavenDB等。
答案 0 :(得分:1)
如果以这种方式允许用户指定的,松散定义的类型,则必然会放弃强类型ORM层的优点。如果这就是你必须做的事情,那么你应该放弃尝试使用ORM,并使用更灵活的数据集和数据引用器回退到ADO.NET风格的数据访问。
中间地点是将这些用户定义的类型序列化为JSON或XML,并在需要时解析它们。这样,您仍然可以将ORM用于强类型应用的部分。