2012-02-19 119 views
3

如何使用LINQ to SQL执行查询?一个类似这样的问题的查询。在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?

回答

3

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

假设您已经拖累所有的表到LINQ2SQL设计师,只需创建一个Student对象,添加StudentLoanStudentLoans收集,并与myContextInstance.Students.InsertOnSubmit(newStudent)添加StudentContext.Students收集和写出来与调用的变化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文件的设计表面。

+0

我不是LINQ人,但StudentLoans表如何填充StudentID列? – 2012-02-19 03:49:44

+0

@AaronBertrand:Linq2Sql知道FK关系,因此可以管理关系的ID。这部分被有效地抽象出来。 – spender 2012-02-19 04:21:37

+0

听起来像我可以尝试打破的乐趣。 :-)它如何做与自引用外键的票价? – 2012-02-19 04:27:39

2

如果你的问题,你的意思是 “如何做一个与LINQ to SQL的执行原始SQL查询”,再看看ExecuteCommandExecuteQuery方法:

所有这些方法都需要一个原始SQL查询,就像你的一样,并根据数据库运行它

如果你的意思是你的问题“如何将这个SQL查询写成LINQ查询”,那么请澄清你的问题。

+0

我的意思是“我如何用LINQ to SQL执行原始SQL查询” – user962206 2012-02-19 05:06:29