查询返回错误的值?

时间:2017-09-08 00:54:18

标签: c# sql

感谢我在write a query that applies to an entire db instead of a table

上从zambonee收到的帮助

使用EF i编写一个从aspNet_Users表返回userId的查询。然后我使用此ID删除成员资格中的记录,userINroles&用户....但是查询返回的userId是错误的值..并且我连接到正确的数据库iv检查了connectionString并测试了其他数据

var s = dnnEntitiesDbContext.ExecuteStoreQuery<string>("Select UserId FROM aspnet_Users where UserName LIKE '%" + userName + "%'");

aspUserIdToRemove返回{296afbff-1b0b-3ff5-9d6c-4e7e599f8b57}时应返回{31E62355-8AE2-4C44-A270-2F185581B742} ...

{296afbff-1b0b-3ff5-9d6c-4e7e599f8b57}甚至不存在于DB中......有没有人知道什么是错的?感谢

只是为了加强对同一个数据库的影响我在不同的表上进一步删除命令并确认它们已被删除

继续发表评论 -

UINavigationController

s.elementtype.GUID持有296afbff-1b0b-3ff5-9d6c-4e7e599f8b57

但是s.base.elementType.baseType.Guid返回差异GUID&#39; 81c5f .... 但没有我正在寻找的那个迹象

1 个答案:

答案 0 :(得分:2)

您可能对ExecuteStoreQuery<T>有一些误解,它会返回您指定的Type。在您的情况下,它将返回string

Guid aspUserIdToRemove = Context.ExecuteStoreQuery<string>("Select UserId FROM aspnet_Users where UserName LIKE '%" + userName + "%'").ElementType.GUID;

通过此声明,ExecuteStoreQuery<string>将返回string类型的UserId,然后从GUID获取ElementType,但不会GUID } 用户

要解决这个问题,您只需要使用

string aspUserIdToRemove = Context.ExecuteStoreQuery<string>("Select UserId FROM aspnet_Users where UserName LIKE '%" + userName + "%'");

您可能希望避免SQL注入,并使用参数

string aspUserIdToRemove = Context.ExecuteStoreQuery<string>("Select UserId FROM aspnet_Users where UserName LIKE '%{0}%'", userName);

详细信息,您可以查看API

由于aspUserIdToRemove是一个字符串,因此您不需要在其上使用.ToString()。但是,我没有足够的数据,您可能需要检查是否需要逃避&#39; {}&#39;。

此外,根据您的评论,\是一个转义字符,如果您想要在字符串中连接,则需要使用\\API