3

我在 SQL Server 中有一个这样的表:

用户

int ID PK Identity
nvarchar(50) Username
nvarchar(50) Password

我将校验和字符串存储在Password列中,并使用此方法对密码进行哈希处理并将它们存储在我的表中

现在我想像这样在 EF 中使用这个表;

User = DBContext.Users.SingleOrDefault(rec => rec.Username == Request["U"] && rec.Password == Request["P"]);

但是因为我将校验和值存储在我的表中,所以我必须更改Request["P"]以在 EF 中使用它

对不起,我是英语新手,你知道我在说什么吗?(我希望我能清楚地解释我的问题:()

UPDATE1:如果我有这样的查询:

Select * from Users where username = @p1 and password = checksum(@p2)

我如何转换 @p2 以使用这样的查询:

Select * from Users where username = @p1 and password = @p2 --Checksum omitted
4

1 回答 1

2

只要您使用 Database First(这意味着您拥有 EDMX),您就可以像这样添加自定义函数

SELECT CHECKSUM(@password)

给你 EDMX,然后你可以在 LINQ 查询中使用密码之前调用它来计算密码的校验和值。

于 2012-05-23T06:24:01.707 回答