C# 在LINQ to SQL中执行查询

C# 在LINQ to SQL中执行查询,c#,sql,linq,linq-to-sql,linq-to-entities,C#,Sql,Linq,Linq To Sql,Linq To Entities,如何使用LINQtoSQL执行查询?一个类似这样的问题 假设我有这张桌子 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

如何使用LINQtoSQL执行查询?一个类似这样的问题

假设我有这张桌子

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执行该查询?

如果您的问题的意思是“如何使用LINQ to SQL执行原始SQL查询”,请查看
ExecuteCommand
ExecuteQuery
方法:

  • 执行命令-
  • 执行程序(重载1)-
  • 执行程序(重载2)-
所有这些方法都采用原始SQL查询(如您的查询),并针对数据库运行它


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

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

假设您已将所有表拖到Linq2Sql设计器上,只需创建一个
Student
对象,将
StudentLoan
添加到其
StudentLoans
集合,并将
Student
添加到
上下文中。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如下所示,则代码段可以工作:


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

我根本不是LINQ guy,但StudentLoans表如何填充StudentID列?@AaronBertrand:Linq2Sql知道FK关系,因此能够管理关系的ID。这一部分被有效地抽象出来了。听起来像是我想尝试打破的东西。:-)使用自引用外键的情况如何?哈!看来L2S现在已经很老了。实体框架现在已经是第四代了,新开发的速度非常令人兴奋。我从未尝试过使用Linq2BlaBla存储树/层次数据,但我相当确信这将是开发团队考虑的一个用例。我最怀念的是某些连接的表现力。。。有时它们可能会变得非常脏,但与此相反,因为您的数据变成了对象模型,所以它消除了许多最常见的连接方案。@spender您说的newYourContext是什么意思?它像DataContext吗?抱歉,我不熟悉术语,我的意思是“如何使用LINQ to SQL执行原始SQL查询”