在像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怎么样?除了代码生成时,是否还可以选择应用表前缀?
答案 0 :(得分:2)
我现在已经研究了在实体框架和LINQ to SQL以及documented the steps required in each中执行此操作所需的内容。这比答案要长得多,所以我会满足于答案的链接,而不是在这里复制。它相对涉及每个,但LINQ to SQL是更灵活的解决方案,也是最容易实现的。
答案 1 :(得分:1)
LightSpeed允许您指定 INamingStrategy ,它允许您在运行时动态解析表名。
答案 2 :(得分:1)
而不是使用表前缀而不是具有属于schema
的应用程序用户(在MS Sql 2005或更高版本中)。
这意味着代替:
select * from dbo.clientAProduct
select * from dbo.clientBroduct
你有:
select * from clientA.Product
select * from clientB.Product