我现在正在开发一个项目,我们必须通过存储过程实现与数据库的所有通信。我们使用 Linq-to-SQL,因此所有数据库实体都已就位。我的问题是,如果可能的话,如何编写一个返回实体的存储过程。
例如,我们在用户使用用户名和密码登录时验证用户,然后进行检查,但是我应该如何编写才能让存储过程返回 Employee 实体?
CREATE PROCEDURE GetLogin (
@UserName NVARCHAR(50),
@Password NVARCHAR(50))
最佳答案
您的 GetLogin
过程执行和/或返回什么?
当您将存储过程添加到 Linq-to-SQL 数据上下文时,您可以在属性窗口中定义“返回类型” - 如果您确定存储过程返回所有组成 User
的属性,那么您可以将该存储过程的返回类型设置为 User
,然后这应该可以工作。
在这种情况下,您的代码将如下所示:
User found = ctx.GetLogin("YourUserName", "TOP$SECRET").SingleOrDefault();
如果在数据库中找到该用户,found
将包含该用户 - 否则,它将为 NULL。
更新:一旦你有了这样一个User
对象,当然,你可以像任何其他Linq-to-SQL对象一样使用它!
您可以修改属性:
found.UserName = "New User Name";
ctx.SubmitChanges();
或者您可以删除它:
ctx.Users.DeleteOnSubmit(found);
ctx.SubmitChanges();
您返回的对象是一个 Linq-to-SQL 对象,就像任何其他对象一样!
关于sql-server - SQL Server 存储过程和 Linq-to-SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3986032/