sql-server - SQL Server 存储过程和 Linq-to-SQL

标签 sql-server linq linq-to-sql stored-procedures

我现在正在开发一个项目,我们必须通过存储过程实现与数据库的所有通信。我们使用 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/

相关文章:

sql-server - 表隐藏在SQL Server数据库中?

SQL 查询和 MS Access 查询返回不同的数据

c# - 如何在 Linq 中使用 Long 类型作为 Skip

.net - 在包含计数的子查询上使用左连接的 Linq

c# - Linq 查询按多列分组但获取其他属性

asp.net - Autofac FactoryScoped Linq to SQL 数据上下文

sql-server - 使用 Access VBA 从 SQL Server 存储过程获取 varchar OUTPUT 参数

sql-server - 每个部署配置的 SSIS 变量值

c# - 子查询,在 Select 内部,不将 Order By 应用于基础查询

使用 Linq 进行 C# 泛型转换