我首先使用Entityframework 6数据库。我正在构建的应用程序将允许用户更改连接字符串。在我测试了新输入的连接字符串有效性之后,我想检查edmx模型上的表是否确实存在于给定的连接字符串中。
所以我尝试了这个:
假设我在edmx上有 ExampleEntity ..来检查它是否存在于我使用的真实数据库表中..
try{
dbContext.ExampleEntity.ToList();
return true; // the table exist
}
catch{
return false;
}
有没有更好的方法来检查使用Entityframework存在数据库表?
答案 0 :(得分:1)
Entity Framework数据库中没有内置函数 - 首先检查EDMX存储模型中的表是否确实存在于数据库中。只有EF代码优先使用迁移进行此类检查。
我们在数据库优先项目中所做的是向包含版本号的数据库添加一个小表。每次数据库升级时,此版本号都会递增。当应用程序启动时,我们检查数据库版本是否与应用程序应与之通信的版本匹配。这是一个非常简单但有用的机制。
答案 1 :(得分:0)
您可以询问数据库是否有一个名称相同的表。
var tableName = "Tablename";
tableName = "'" + tableName + "'";
var count = cxt.Database.SqlQuery(typeof(int), "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME ="+ tableName).ToListAsync().FirstOrDefault();
var result = Convert.ToInt32(count); //1=true, 0=false;