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

因为我讨厌编码 增删改查 手工操作,我更喜欢通过有能力的 OR/M 来工作,并且使用(并且喜欢)LINQ to SQL、Subsonic 和 ADO.Net。然而,当我在一个新项目中将表前缀放入用户的 web.config 文件时,我遇到了一些麻烦。有没有基于.Net的OR/M产品可以优雅地处理这种场景?

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

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

有帮助吗?

解决方案

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

其他提示

光速 允许您指定一个 命名策略 它允许您在运行时动态解析表名称。

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

这意味着而不是:

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

你有:

select * from clientA.Product
select * from clientB.Product
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top