我們有一個已經部署到各種客戶端的數據庫。我們目前正在推出一項可選新功能,要使用這項功能,需要希望該功能的客戶將新表添加到現有數據庫中。使用LINQ檢查數據庫中是否存在表格
由於我們正在推出一款新的軟件,它將不得不與新版本的數據庫進行交互(並且我們不希望2版本的版本適用於擁有新表格和一個不支持的人)我們想知道是否可以通過編程方式確定(使用實體框架)數據庫中是否存在一個表(我可以嘗試訪問表並讓它拋出一個異常但想知道是否存在一個內置的函數來做到這一點)
感謝
編輯:鑑於人們告訴我,我應該使用一個配置文件中沒有用EF來檢查任何人都可以給我指導如何檢查配置文件,例如,爲mvc控制器定製數據註釋。類似於:
[Boolean(Properties.Settings.Default.TableExists)]
public class NamedController : Controller
如果爲false,會拋出一個找不到的頁面?
編輯2:由人給出的建議使用的配置設置我結束了以下解決方案
應用程序設置來設置表是否存在
<appSettings>
<add key="tableExists" value="True"/>
</appSettings>
自定義數據註解說是否允許訪問控制器
[AuthoriseIfTableExistsIsTrue]
public class NamedController : Controller
自定義授權代碼
public class AuthoriseIfTableExistsIsTrue : AuthorizeAttribute
{
private readonly bool _tableExists;
public AuthoriseIfTableExistsIsTrue()
{
_tableExists = string.Equals(bool.TrueString, ConfigurationManager.AppSettings["tableExists"], StringComparison.InvariantCultureIgnoreCase);
}
public AuthoriseIfTableExistsIsTrue(bool authorise)
{
_tableExists = authorise;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (_tableExists)
return base.AuthorizeCore(httpContext);
else
throw new HttpException(404, "HTTP/1.1 404 Not Found");
}
}
感謝大家的幫助,告訴我不要使用EF,這和使用的配置設置,而不是
可能重複http://stackoverflow.com/questions/167576/sql-server-check-if-table-exists – 2011-03-07 10:32:19
我不會爲此使用LINQ。當然,你可以映射數據庫模式元數據(我不會)。 – 2011-03-07 10:36:57
@K伊萬諾夫不是真的重複,我問是否可以用Entity框架來完成,我已經知道如何使用SQL – Manatherin 2011-03-08 11:18:15