【发布时间】:2013-07-02 21:14:54
【问题描述】:
我正在使用 c# 和实体框架代码优先方法开发库存应用程序。
其中一个设计要求是用户应该能够创建多个公司,每个公司应该有一套完整的库存主表。
例如,每个公司都应该有自己的股票日记帐和项目清单。将来还有一种方法可以将这些公司合并成一个“集团”公司,本质上是合并数据。
使用像 sqlite 这样的基于文件的 RDBMS,它非常简单,我只需要为每个公司创建一个单独的 sqlite 数据库,然后创建一个主数据库将它们连接在一起。但是我应该如何在单个数据库文件中进行操作!不是多个文件数据库。 我不想在每张桌子上都有一个“公司”列!
我对数据库的有限知识的想法是使用不同的模式进行分离。每个公司的一个模式在每个模式中具有相同的表集,并使用一个单独的模式来保存公共表和表以将其他模式联系在一起。这是一个好方法吗?因为我很难找到一种方法来“动态”首先使用 ef 和代码创建模式。
编辑 #1
要了解公司的数量,一个企业大约有 4-5 家公司,每个财政年度关闭旧公司并创建一组新公司。在同一个文件中维护多年的数据本质上是好的,但只要我可以提供一个单独的模块来加载几年的数据,从几个 db 文件中以方便逐年分析,这不是必需的。
就单个公司数据的大小而言,它可以达到每个公司的 GB 标记。
至少在表级别上,架构更改非常频繁,因为它可以完全由用户自定义。
我想引发我的问题的一个方面是这种设计的实施。如果它是一个具有独立桌面界面和实现的应用程序,并且我在像 SQL Server 这样的 RDBMS 服务器上有我的数据库,那么数据库的数量并不重要。但是,对于托管在第三方上并使用其数据库服务器的基于 Web 的 UI,可用的数据库数量将受到限制。唯一的解决方案是使用像 SQLite 这样的无服务器数据库。 但就一般建议而言,不建议将 SQLite 用于大型企业级数据库。
【问题讨论】:
-
很好地阅读了这个msdn.microsoft.com/en-us/library/aa479086.aspx 但是我仍然需要一些关于首先使用 c# 和 EF 代码的方法的帮助。我想采用多模式方法。
标签: c# entity-framework database-design database-schema