Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server存储过程和Linq到SQL_Sql Server_Linq_Linq To Sql_Stored Procedures - Fatal编程技术网

Sql server SQL Server存储过程和Linq到SQL

Sql server SQL Server存储过程和Linq到SQL,sql-server,linq,linq-to-sql,stored-procedures,Sql Server,Linq,Linq To Sql,Stored Procedures,我现在正在做一个项目,我们必须通过存储过程实现与数据库的所有通信。我们正在使用LINQtoSQL,因此所有数据库实体都已就位。我的问题是,如果可能的话,如何编写返回实体的存储过程 例如,当用户使用username和pass登录时,我们对其进行验证,然后进行检查,但我应该如何编写以使存储过程返回Employee实体 CREATE PROCEDURE GetLogin ( @UserName NVARCHAR(50), @Password NVARCHAR(50)) 您的GetLo

我现在正在做一个项目,我们必须通过存储过程实现与数据库的所有通信。我们正在使用LINQtoSQL,因此所有数据库实体都已就位。我的问题是,如果可能的话,如何编写返回实体的存储过程

例如,当用户使用username和pass登录时,我们对其进行验证,然后进行检查,但我应该如何编写以使存储过程返回Employee实体

CREATE PROCEDURE GetLogin (
    @UserName NVARCHAR(50),
    @Password NVARCHAR(50))

您的
GetLogin
过程做什么和/或返回什么

将存储过程添加到Linq to SQL数据上下文时,可以在“属性”窗口中定义“返回类型”-如果确定存储过程返回构成
用户的所有属性,则可以将该存储过程的返回类型设置为
用户
,然后这应该可以工作

在这种情况下,您的代码如下所示:

User found = ctx.GetLogin("YourUserName", "TOP$SECRET").SingleOrDefault();
如果在数据库中找到该用户,
found
将包含该用户-否则,该用户将为NULL

更新:一旦您有了这样一个
用户对象,当然,您可以像使用任何其他Linq to SQL对象一样使用它

您可以修改属性:

found.UserName = "New User Name";
ctx.SubmitChanges();
或者您可以删除它:

ctx.Users.DeleteOnSubmit(found);
ctx.SubmitChanges();

您要返回的对象与其他对象一样是Linq to SQL对象

我认为这是不可能的。@Alexander:当然可以-看看我的答案……你好,谢谢你的帮助!当我将其更改为返回用户时,它就像一个符咒,所以现在它重新生成一个列表,我只选择第一个。但如果我不确定我会得到什么回报,我如何以最佳方式与这些数据交互?例如,如果我想像上面那样返回一个用户,但出现了错误,然后我想让过程返回一个带有错误消息的字符串,我应该如何处理//Thanks@Fore:在这种情况下,抛出一个带有该错误消息的异常,然后在应用程序中捕获该异常并将错误呈现给用户(类似于“用户未找到”)-这是标准的.NET方法,可以这样做吗?好的,一旦我有了这个用户,我是否能够编辑它,或者从数据库中删除它,不使用数据库查找?我的意思是,它如何知道它实际上是数据库中的有效用户?如果我以相同的形式传输数据,但数据库中实际上不存在这样的数据,该怎么办?在这种情况下,这将不再是一个真正的实体,而是一个功能为零的简单数据结构(这是从LINQ到SQL中的SP获得的)。这就是我在上述评论中的意思。@Alexander:是的!你可以做所有这些事情!查看我的更新-并亲自尝试!那好吧。感谢您的耐心:)。一定会在我的新项目中尝试。现在我远离DB,使用模拟类。