【问题标题】:Get an Id from EF query then use that to remove records从 EF 查询中获取一个 Id,然后使用它来删除记录
【发布时间】:2017-09-07 04:42:48
【问题描述】:

使用 EF 我想从 Dot 数据库中删除一个用户...这一切都适用于像

这样的代码
DbContext.ExecuteStoreCommand("DELETE FROM activeforums_Attachments where UserId = " + userId);
DbContext.ExecuteStoreCommand("DELETE FROM activeforums_Forums_Tracking where UserId = " + userId);
DbContext.ExecuteStoreCommand("DELETE FROM activeforums_Poll where UserId = " + userId);
DbContext.ExecuteStoreCommand("DELETE FROM activeforums_Poll_Results where UserId = " + userId);

我可以使用 aspNetUserId 手动删除:

 string aspNetUserId = "'21F72BCA-A51P-47DF-B57A-C31A191C61D2'";
    DbContext.ExecuteStoreCommand("DELETE FROM aspnet_Membership where UserId = " + aspNetUserId);
    DbContext.ExecuteStoreCommand("DELETE FROM aspnet_UsersInRoles where UserId = " + aspNetUserId);
    DbContext.ExecuteStoreCommand("DELETE FROM aspnet_Users where UserId = " + aspNetUserId);

这有效...所以现在我需要做的就是从用户名中获取每个单独的 aspNetUserId...所以我正在尝试类似

using (DEntities DbContext = DAOHelper.GetObjectContext<DEntities>())
{
var userIdToRemove = DbContext.ExecuteStoreCommand("Select FROM aspnet_Membership where UserName = " + userName);
DbContext.ExecuteStoreCommand("DELETE FROM aspnet_Membership where UserId = " + userIdToRemove.UserId);
DbContext.ExecuteStoreCommand("DELETE FROM aspnet_UsersInRoles where UserId = " + userIdToRemove.UserId);
DbContext.ExecuteStoreCommand("DELETE FROM aspnet_Users where UserId = " + userIdToRemove.UserId);

这样的事情可能吗?在使用 EF 时设置一个 var,如果没有其他人对如何解决这个问题有任何想法......感谢任何回复

【问题讨论】:

  • 既然已经有了漂亮的实体框架库,为什么还要使用 SQL 语句?
  • 我正在处理由另一个用户创建的现有代码,这是我在修复错误时遇到的问题...不要射击编辑器:P

标签: c# mysql sql entity-framework


【解决方案1】:

看起来您的 Select 查询有误:

Select FROM aspnet_Membership where UserName = userName

应该是

Select UserId FROM aspnet_Membership where UserName = userName

因为您只需要 UserId。

另外,您应该使用 ExecuteStoreQuery 来查询数据库,如下所示:

var userIdToRemove = DbContext.ExecuteStoreQuery<string>("Select UserId FROM aspnet_Membership where UserName = " + userName);

那么当然使用 userIdToRemove 而不是 userIdToRemove.UserId

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 2020-04-09
    • 2015-12-03
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多