如何使用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执行该查询?
答案 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如下所示,则代码段有效:
这是将表拖到dbml文件的设计图面的结果。
答案 1 :(得分:2)
如果您的问题意味着“如何使用LINQ to SQL执行原始SQL查询”,那么请查看ExecuteCommand
和ExecuteQuery
方法:
所有这些方法都采用原始SQL查询,就像您的查询一样,并针对数据库运行它
如果您的问题是“如何将此SQL查询编写为LINQ查询”,请澄清您的问题。