.Net OR / M的可配置表前缀?

时间:2020-03-05 18:39:46  来源:igfitidea点击:

在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怎么样?除了在代码生成时,还可以选择应用表前缀吗?

解决方案

回答

LightSpeed使我们可以指定INamingStrategy,该策略可让我们在运行时动态解析表名。

回答

而不是使用表前缀,而是拥有属于"模式"的应用程序用户(在MS Sql 2005或者更高版本中)。

这意味着代替:

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

你有:

select * from clientA.Product
select * from clientB.Product

回答

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