使用一个 DataContext.ExecuteCommand 执行多表查询
Use one DataContext.ExecuteCommand to execute query for multiple tables
我需要从我的 table 数据库中删除所有数据。所以我使用 DataContext.ExecuteCommand
.
db.ExecuteCommand("DELETE From Products");
此方法会为每个 table 导致对数据库的新请求。我想在一次查询中清除 table 中的数据。但是到目前为止,我所有的尝试都没有成功。
是否可以使用 DataContext.ExecuteCommand
从多个 table 中删除数据(多个 SQL 查询)?
try
{
using (var context = new DataContext())
{
context.DeleteAll();
}
}
catch (Exception exception)
{
LogHelper.Log(exception);
}
private static void DeleteAll(this DataContext context)
{
var ctx = ((IObjectContextAdapter)context).ObjectContext;
ctx.ExecuteStoreCommand("DELETE FROM [RegionProducts]; DELETE FROM [ProductTypes]; DELETE FROM [Measurements]; DELETE FROM [Sizes]; " +
"DELETE FROM [Regions]; DELETE FROM [Types]; DELETE FROM [Categories]; DELETE FROM [Images] where Product_Id is not null; DELETE FROM [Products]; " +
"DELETE FROM [Brands]; DELETE FROM [Images];");
}
这在很大程度上取决于您正在使用的 实际数据库系统 - 但对于例如SQL 服务器,你应该可以有多个 DELETE
语句 - 用分号分隔 - 像这样:
string deleteQuery = "DELETE FROM dbo.Products; DELETE FROM dbo.OtherTable; DELETE FROM dbo.YetAnotherTable;";
db.ExecuteCommand(deleteQuery);
当然,如果其他表仍然引用其数据,您需要注意任何可能导致删除失败的 FK 关系 - 但应该可以在单个 db.ExecuteCommand
中完成此操作打电话
更新: 不幸的是,在您使用的 SQL Server Compact Edition v4 中,您不能有多个 SQL 单个命令中的语句 - 只是不支持。这种方法在 真实 SQL 服务器中 很好 - 但它 不会 工作在 SQL 服务器 CE ...
我需要从我的 table 数据库中删除所有数据。所以我使用 DataContext.ExecuteCommand
.
db.ExecuteCommand("DELETE From Products");
此方法会为每个 table 导致对数据库的新请求。我想在一次查询中清除 table 中的数据。但是到目前为止,我所有的尝试都没有成功。
是否可以使用 DataContext.ExecuteCommand
从多个 table 中删除数据(多个 SQL 查询)?
try
{
using (var context = new DataContext())
{
context.DeleteAll();
}
}
catch (Exception exception)
{
LogHelper.Log(exception);
}
private static void DeleteAll(this DataContext context)
{
var ctx = ((IObjectContextAdapter)context).ObjectContext;
ctx.ExecuteStoreCommand("DELETE FROM [RegionProducts]; DELETE FROM [ProductTypes]; DELETE FROM [Measurements]; DELETE FROM [Sizes]; " +
"DELETE FROM [Regions]; DELETE FROM [Types]; DELETE FROM [Categories]; DELETE FROM [Images] where Product_Id is not null; DELETE FROM [Products]; " +
"DELETE FROM [Brands]; DELETE FROM [Images];");
}
这在很大程度上取决于您正在使用的 实际数据库系统 - 但对于例如SQL 服务器,你应该可以有多个 DELETE
语句 - 用分号分隔 - 像这样:
string deleteQuery = "DELETE FROM dbo.Products; DELETE FROM dbo.OtherTable; DELETE FROM dbo.YetAnotherTable;";
db.ExecuteCommand(deleteQuery);
当然,如果其他表仍然引用其数据,您需要注意任何可能导致删除失败的 FK 关系 - 但应该可以在单个 db.ExecuteCommand
中完成此操作打电话
更新: 不幸的是,在您使用的 SQL Server Compact Edition v4 中,您不能有多个 SQL 单个命令中的语句 - 只是不支持。这种方法在 真实 SQL 服务器中 很好 - 但它 不会 工作在 SQL 服务器 CE ...