2011-01-28 76 views
2

我曾在MVC 2的时间表应用程序应用程序中供公司内部使用。现在其他小公司已经表现出对该应用的兴趣。我没有考虑过这个应用程序的使用,但它让我对它意味着什么感兴趣。在Asp.Net MVC应用程序中以编程方式创建新数据库?

我相信我可以通过修改数据库(实体框架模型访问的Sql Server)使它适用于多个客户端。但我已经阅读了一些倡导多个数据库的人(每个客户端一个)。因为我不会冒险将各种客户端的数据混淆在同一个数据库中(当然不应该发生这种情况,但如果它真的发生了......),直观地感觉这是一个好主意。但是如何特别实施多个数据库解决方案?

I.e.只需一个数据库,我就可以拥有一个客户端注册表,并且所需的所有数据都将以应用程序的方式添加,就像现在只有一个客户端(我自己的公司)时一样。

但是对于多数据库解决方案,如何在用户注册时以编程方式创建新数据库?请注意,我已经完成了所有使用Linq to Sql的数据库内容,并且我对常规SQL编程不是很熟悉......

我真的很感谢如何做到这一点的清晰的详细解释(以及输入关于这是一个好主意还是由于某种原因单个数据库会更好)。

编辑:

我也看到了有关单个数据库替代的讨论,这表明你会再添加客户端Id到每个表...但是那不是很难在代码维护?我将不得不在我认为的很多linq查询中添加“where”条件......并且我假设每个表上都有一个ClientId意味着每个表都需要与Client表有多对一的关系?这不是一个非常复杂的数据库结构吗?

因为它是现在(未经客户表)我有以下表(1 - > *标明一对多的关系):

客户1 - > *项目1 - > *任务1 - > * TimeSegment 1 - > *员工

此外,客户与TimeSegment直接有一对多关系,为了方便简化某些查询。

到目前为止,这工作得很好。难道只有一个客户表(或用户公司或任何人可能称之为)与客户表有一对多的关系吗?数据完整性不足以满足其他表格,因为其余表格由关系处理?

回答

1

至于是否使用单个数据库或多个数据库,这一切都取决于用例。更多的数据库意味着更多的管理需求,潜在的更多的磁盘空间需求等等。在这里有更多的事情需要考虑,而不仅仅是如何创建数据库,比如你如何自动创建备份过程等。我个人会使用一个数据库一个很好的认证系统,可以将数据过滤到适当的客户端。

关于创建数据库,请查看this blog post。它描述了如何在c#.net中使用SMO(sql管理对象)来创建数据库。他们是一个非常整洁的工具,你一定要熟悉它们。

要处理后续问题,是的,客户和客户之间的单一顶级关系应该足以将新客户限制在适当的数据。

没有关于您的应用程序的任何真正的知识我不能说这是多么复杂的表将是,但假设您的数据层达到鼻烟,我会认为你真的只需要限制客户类的当前客户端,然后根据可用客户获取所有其他数据。

确实有意义吗?

+0

感谢。不过,请参阅我的后续流程,了解如何处理单个数据库关系? – Anders 2011-01-28 23:54:44

+0

@Anders Svensson,编辑后续问题。 – 2011-01-29 04:36:00

相关问题