在LINQ to SQL中执行查询

时间:2012-02-19 02:17:25

标签: c# sql linq linq-to-sql linq-to-entities

如何使用LINQ to SQL执行查询?一个类似这样的问题的查询。

假设我有这张桌子

CREATE TABLE dbo.Students
(
  StudentID INT IDENTITY(1,1) PRIMARY KEY,
  Name SYSNAME
);

CREATE TABLE dbo.StudentLoans
(
  LoanID INT IDENTITY(1,1) PRIMARY KEY,
  StudentID INT FOREIGN KEY REFERENCES dbo.Students(StudentID),
  Amount BIGINT -- just being funny
);

然后我想执行此查询。

DECLARE 
  @Name       SYSNAME = N'user962206', 
  @LoanAmount BIGINT = 50000,
  @StudentID  INT;

INSERT dbo.Students(Name) 
  SELECT @Name;

SELECT @StudentID = SCOPE_IDENTITY();

INSERT dbo.StudentLoans(StudentID, Amount)
  SELECT @StudentID, @LoanAmount;

这可能吗?即使您的行和列已映射?如何使用LINQ to SQL执行该查询?

2 个答案:

答案 0 :(得分:3)

已经有一段时间了,但不会是这样吗?

假设您已将所有表拖到Linq2Sql设计器上,只需创建一个Student对象,将StudentLoan添加到其StudentLoans集合中,然后添加Student使用Context.Students加入myContextInstance.Students.InsertOnSubmit(newStudent)集合,并通过调用myContextInstance.SubmitChanges写出更改。

所以,把它们放在一起:

using(var myContextInstance=new YourContext())
{
    var student = new Student(){Name = "user962206"};
    var studentLoan = new StudentLoan(){Amount = 50000};
    student.StudentLoans.Add(studentLoan);
    myContextInstance.Students.InsertOnSubmit(student);
    myContextInstance.SubmitChanges();
}

如果您的DataContext如下所示,则代码段有效:

enter image description here

这是将表拖到dbml文件的设计图面的结果。

答案 1 :(得分:2)

如果您的问题意味着“如何使用LINQ to SQL执行原始SQL查询”,那么请查看ExecuteCommandExecuteQuery方法:

所有这些方法都采用原始SQL查询,就像您的查询一样,并针对数据库运行它

如果您的问题是“如何将此SQL查询编写为LINQ查询”,请澄清您的问题。