4

在 wiki 或论坛或博客软件等 Web 应用程序中,将数据存储在关系数据库中通常很有用。由于许多托管公司在其托管计划中提供单个数据库(额外的数据库需要额外付费),因此当您的数据库对象(表、视图、约束和存储过程)具有公共前缀时,这对您的用户非常有用。意识到数据库稀缺性的应用程序通常具有硬编码的表前缀。然而,我想要更多。具体来说,我希望有一个用户可以指定的表前缀——比如在 web.config 文件中(当然,使用适当的默认值)。

因为我讨厌手动编写CRUD操作,所以我更喜欢通过有能力的 OR/M 工作,并且使用(并喜欢)LINQ to SQL、Subsonic 和 ADO.Net。但是,在将表前缀放入用户的 web.config 文件中时,我在一个新项目中遇到了一些麻烦。是否有任何基于 .Net 的 OR/M 产品可以优雅地处理这种情况?

到目前为止,我能想到的最好的方法是使用带有外部映射文件的 LINQ to SQL,我必须根据一个尚未假设的 web.config 设置以某种方式更新该文件。

有人有更好的解决方案吗?我试图在实体框架中实现它,但很快就变成了一团糟。(由于我对 EF 不熟悉?可能。) SubSonic 怎么样?除了在代码生成时,它是否可以选择应用表前缀?

4

3 回答 3

2

我现在研究了在 Entity Framework 和 LINQ to SQL 中执行此操作需要什么,并记录了每个. 它比这里的答案要长得多,所以我会满足于答案的链接,而不是在这里复制它。每个都相对涉及,但 LINQ to SQL 是更灵活的解决方案,也是最容易实现的解决方案。

于 2008-08-28T14:49:41.663 回答
1

LightSpeed允许您指定一个INamingStrategy,让您在运行时动态解析表名。

于 2008-08-14T23:04:50.530 回答
1

而不是使用表前缀,而是拥有一个属于 a 的应用程序用户schema(在 MS Sql 2005 或更高版本中)。

这意味着,而不是:

select * from dbo.clientAProduct
select * from dbo.clientBroduct

你有:

select * from clientA.Product
select * from clientB.Product
于 2008-08-15T08:56:02.473 回答