我们有一个已经部署到各种客户端的数据库。我们目前正在推出一项可选新功能,要使用这项功能,需要希望该功能的客户将新表添加到现有数据库中。使用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