转换我已创建的应用程序和数据库以支持单个数据库上的多个站点

时间:2011-09-11 09:07:30

标签: c# asp.net linq database-design

我几年前为我的一个客户创建了一个自定义CMS,并不断开发它。它有实体,实体组和许多其他表,并使用LINQ2SQL来访问数据。我有4或5个基类生成自定义控件。

最近,我们需要创建另一个使用当前网站成员资格和身份验证提供程序的网站,这些网站具有相同的结构,但内容不同。

它让我考虑使用单个数据库来存储两个站点内容,但是通过向每个站点和内容表的web.config添加类似ApplicationName的字段来分隔数据。像默认会员的当前设计和ASP.net的角色提供者。

但是,我不确定它是否是最好的解决方案。我想知道你对设计这样的系统的建议。

我想尽量减少这需要的更改。例如,如果在创建数据库上下文时有一种设置ApplicationID的方法(我在我的基类中创建数据库上下文,因此更改将在一个位置),那将是非常好的,因此不需要更改现有的查询!或者,有没有在他们发送到数据库引擎之前获取和修复查询?这些是我的想法,你还有其他建议吗?

问题很简单:将现有数据库和应用程序用于多个站点的最佳解决方案是什么?只需最少的更改和努力?

1 个答案:

答案 0 :(得分:3)

如果网站是分开的,我强烈建议多个数据库;这将:

  • 降低暴露错误数据的风险
  • 允许更精细的备份/维护
  • 避免过大的数据库
  • 允许您在不再需要时干净地删除网站
  • 允许您平衡数据库服务器之间的数据库(站点)
  • 避免影响性能(为每次查询添加额外的过滤器都是件坏事)
  • 减少您需要对应用进行的更改次数

基本上,我只是让你的中心“GetConnection()”方法担心多租户,为site / config / user提供正确的连接。

提示:这就是我们在stackoverflow / stackexchange上所做的事情