2008-08-14 80 views
4

在诸如wiki或论坛或博客软件的Web应用程序中,将数据存储在关系数据库中通常很有用。由于许多托管公司提供单一数据库及其托管计划(其他数据库花费额外资源),因此当数据库对象(表,视图,约束和存储过程)具有通用前缀时,它对用户非常有用。对于数据库稀缺的应用程序来说,通常会有一个硬编码的表前缀。然而,我想要更多。具体来说,我想要有一个表前缀,用户可以在web.config文件中指定—(当然有适当的默认值)。带有.Net OR/M的可配置表前缀?

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

到目前为止我所能够想到的最好的方法是使用LINQ to SQL和外部映射文件,我必须基于尚未假设的web.config设置进行更新。

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

回答

2

现在我已经研究如何才能在这两个实体框架和LINQ这样做是为了SQL和documented the steps required in each。它比这里的答案要长得多,所以我会满足于答案的链接,而不是在这里重复。它相对每个人都参与其中,但LINQ to SQL是更灵活的解决方案,也是最容易实现的。

1

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

1

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

这意味着,代替:

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

您有:

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