本系列整理自EF 實體框架入門 。 sql
該系列用到的數據庫爲 school,使用SQL Server。若是沒有安裝,能夠使用VS附帶的SQL Express。步驟省略,不清楚的能夠使用「靠譜的」搜索引擎查找。 數據庫
SQL腳本: 框架
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- 建立 Department 表。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Department]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[Department]( [DepartmentID] [int] NOT NULL, [Name] [nvarchar](50) NOT NULL, [Budget] [money] NOT NULL, [StartDate] [datetime] NOT NULL, [Administrator] [int] NULL, CONSTRAINT [PK_Department] PRIMARY KEY CLUSTERED ( [DepartmentID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- 建立 Person 表。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Person]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[Person]( [PersonID] [int] IDENTITY(1,1) NOT NULL, [LastName] [nvarchar](50) NOT NULL, [FirstName] [nvarchar](50) NOT NULL, [HireDate] [datetime] NULL, [EnrollmentDate] [datetime] NULL, [Discriminator] [nvarchar](50) NOT NULL, CONSTRAINT [PK_School.Student] PRIMARY KEY CLUSTERED ( [PersonID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- 建立 OnsiteCourse 表。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[OnsiteCourse]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[OnsiteCourse]( [CourseID] [int] NOT NULL, [Location] [nvarchar](50) NOT NULL, [Days] [nvarchar](50) NOT NULL, [Time] [smalldatetime] NOT NULL, CONSTRAINT [PK_OnsiteCourse] PRIMARY KEY CLUSTERED ( [CourseID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- 建立 OnlineCourse 表。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[OnlineCourse]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[OnlineCourse]( [CourseID] [int] NOT NULL, [URL] [nvarchar](100) NOT NULL, CONSTRAINT [PK_OnlineCourse] PRIMARY KEY CLUSTERED ( [CourseID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- 建立 StudentGrade 表。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[StudentGrade]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[StudentGrade]( [EnrollmentID] [int] IDENTITY(1,1) NOT NULL, [CourseID] [int] NOT NULL, [StudentID] [int] NOT NULL, [Grade] [decimal](3, 2) NULL, CONSTRAINT [PK_StudentGrade] PRIMARY KEY CLUSTERED ( [EnrollmentID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- 建立 CourseInstructor 表。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CourseInstructor]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[CourseInstructor]( [CourseID] [int] NOT NULL, [PersonID] [int] NOT NULL, CONSTRAINT [PK_CourseInstructor] PRIMARY KEY CLUSTERED ( [CourseID] ASC, [PersonID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- 建立 Course 表。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Course]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[Course]( [CourseID] [int] NOT NULL, [Title] [nvarchar](100) NOT NULL, [Credits] [int] NOT NULL, [DepartmentID] [int] NOT NULL, CONSTRAINT [PK_School.Course] PRIMARY KEY CLUSTERED ( [CourseID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- 建立 OfficeAssignment 表。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[OfficeAssignment]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[OfficeAssignment]( [InstructorID] [int] NOT NULL, [Location] [nvarchar](50) NOT NULL, [Timestamp] [timestamp] NOT NULL, CONSTRAINT [PK_OfficeAssignment] PRIMARY KEY CLUSTERED ( [InstructorID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- 定義 OnsiteCourse 與 Course 之間的關係。 IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_OnsiteCourse_Course]') AND parent_object_id = OBJECT_ID(N'[dbo].[OnsiteCourse]')) ALTER TABLE [dbo].[OnsiteCourse] WITH CHECK ADD CONSTRAINT [FK_OnsiteCourse_Course] FOREIGN KEY([CourseID]) REFERENCES [dbo].[Course] ([CourseID]) GO ALTER TABLE [dbo].[OnsiteCourse] CHECK CONSTRAINT [FK_OnsiteCourse_Course] GO -- 定義 OnlineCourse 與 Course 之間的關係。 IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_OnlineCourse_Course]') AND parent_object_id = OBJECT_ID(N'[dbo].[OnlineCourse]')) ALTER TABLE [dbo].[OnlineCourse] WITH CHECK ADD CONSTRAINT [FK_OnlineCourse_Course] FOREIGN KEY([CourseID]) REFERENCES [dbo].[Course] ([CourseID]) GO ALTER TABLE [dbo].[OnlineCourse] CHECK CONSTRAINT [FK_OnlineCourse_Course] GO -- 定義 StudentGrade 與 Course 之間的關係。 IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_StudentGrade_Course]') AND parent_object_id = OBJECT_ID(N'[dbo].[StudentGrade]')) ALTER TABLE [dbo].[StudentGrade] WITH CHECK ADD CONSTRAINT [FK_StudentGrade_Course] FOREIGN KEY([CourseID]) REFERENCES [dbo].[Course] ([CourseID]) GO ALTER TABLE [dbo].[StudentGrade] CHECK CONSTRAINT [FK_StudentGrade_Course] GO -- 定義 StudentGrade 與 Student 之間的關係。 IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_StudentGrade_Student]') AND parent_object_id = OBJECT_ID(N'[dbo].[StudentGrade]')) ALTER TABLE [dbo].[StudentGrade] WITH CHECK ADD CONSTRAINT [FK_StudentGrade_Student] FOREIGN KEY([StudentID]) REFERENCES [dbo].[Person] ([PersonID]) GO ALTER TABLE [dbo].[StudentGrade] CHECK CONSTRAINT [FK_StudentGrade_Student] GO -- 定義 CourseInstructor 與 Course 之間的關係。 IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_CourseInstructor_Course]') AND parent_object_id = OBJECT_ID(N'[dbo].[CourseInstructor]')) ALTER TABLE [dbo].[CourseInstructor] WITH CHECK ADD CONSTRAINT [FK_CourseInstructor_Course] FOREIGN KEY([CourseID]) REFERENCES [dbo].[Course] ([CourseID]) GO ALTER TABLE [dbo].[CourseInstructor] CHECK CONSTRAINT [FK_CourseInstructor_Course] GO -- 定義 CourseInstructor 與 Person 之間的關係。 IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_CourseInstructor_Person]') AND parent_object_id = OBJECT_ID(N'[dbo].[CourseInstructor]')) ALTER TABLE [dbo].[CourseInstructor] WITH CHECK ADD CONSTRAINT [FK_CourseInstructor_Person] FOREIGN KEY([PersonID]) REFERENCES [dbo].[Person] ([PersonID]) GO ALTER TABLE [dbo].[CourseInstructor] CHECK CONSTRAINT [FK_CourseInstructor_Person] GO -- 定義 Course 與 Department 之間的關係。 IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Course_Department]') AND parent_object_id = OBJECT_ID(N'[dbo].[Course]')) ALTER TABLE [dbo].[Course] WITH CHECK ADD CONSTRAINT [FK_Course_Department] FOREIGN KEY([DepartmentID]) REFERENCES [dbo].[Department] ([DepartmentID]) GO ALTER TABLE [dbo].[Course] CHECK CONSTRAINT [FK_Course_Department] GO -- 定義 OfficeAssignment 與 Person 之間的關係。 IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_OfficeAssignment_Person]') AND parent_object_id = OBJECT_ID(N'[dbo].[OfficeAssignment]')) ALTER TABLE [dbo].[OfficeAssignment] WITH CHECK ADD CONSTRAINT [FK_OfficeAssignment_Person] FOREIGN KEY([InstructorID]) REFERENCES [dbo].[Person] ([PersonID]) GO ALTER TABLE [dbo].[OfficeAssignment] CHECK CONSTRAINT [FK_OfficeAssignment_Person] GO -- 建立 InsertOfficeAssignment 存儲過程。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[InsertOfficeAssignment]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[InsertOfficeAssignment] @InstructorID int, @Location nvarchar(50) AS INSERT INTO dbo.OfficeAssignment (InstructorID, Location) VALUES (@InstructorID, @Location); IF @@ROWCOUNT > 0 BEGIN SELECT [Timestamp] FROM OfficeAssignment WHERE InstructorID=@InstructorID; END ' END GO -- 建立 UpdateOfficeAssignment 存儲過程。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[UpdateOfficeAssignment]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[UpdateOfficeAssignment] @InstructorID int, @Location nvarchar(50), @OrigTimestamp timestamp AS UPDATE OfficeAssignment SET Location=@Location WHERE InstructorID=@InstructorID AND [Timestamp]=@OrigTimestamp; IF @@ROWCOUNT > 0 BEGIN SELECT [Timestamp] FROM OfficeAssignment WHERE InstructorID=@InstructorID; END ' END GO -- 建立 DeleteOfficeAssignment 存儲過程。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DeleteOfficeAssignment]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[DeleteOfficeAssignment] @InstructorID int AS DELETE FROM OfficeAssignment WHERE InstructorID=@InstructorID; ' END GO -- 建立 DeletePerson 存儲過程。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DeletePerson]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[DeletePerson] @PersonID int AS DELETE FROM Person WHERE PersonID = @PersonID; ' END GO -- 建立 UpdatePerson 存儲過程。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[UpdatePerson]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[UpdatePerson] @PersonID int, @LastName nvarchar(50), @FirstName nvarchar(50), @HireDate datetime, @EnrollmentDate datetime, @Discriminator nvarchar(50) AS UPDATE Person SET LastName=@LastName, FirstName=@FirstName, HireDate=@HireDate, EnrollmentDate=@EnrollmentDate, Discriminator=@Discriminator WHERE PersonID=@PersonID; ' END GO -- 建立 InsertPerson 存儲過程。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[InsertPerson]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[InsertPerson] @LastName nvarchar(50), @FirstName nvarchar(50), @HireDate datetime, @EnrollmentDate datetime, @Discriminator nvarchar(50) AS INSERT INTO dbo.Person (LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (@LastName, @FirstName, @HireDate, @EnrollmentDate, @Discriminator); SELECT SCOPE_IDENTITY() as NewPersonID; ' END GO -- 建立 GetStudentGrades 存儲過程。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetStudentGrades]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[GetStudentGrades] @StudentID int AS SELECT EnrollmentID, Grade, CourseID, StudentID FROM dbo.StudentGrade WHERE StudentID = @StudentID ' END GO -- 建立 GetDepartmentName 存儲過程。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetDepartmentName]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[GetDepartmentName] @ID int, @Name nvarchar(50) OUTPUT AS SELECT @Name = Name FROM Department WHERE DepartmentID = @ID ' END GO -- 將數據插到 Person 表中。 USE School GO SET IDENTITY_INSERT dbo.Person ON GO INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (1, 'Abercrombie', 'Kim', '1995-03-11', null, 'Instructor'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (2, 'Barzdukas', 'Gytis', null, '2005-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (3, 'Justice', 'Peggy', null, '2001-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (4, 'Fakhouri', 'Fadi', '2002-08-06', null, 'Instructor'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (5, 'Harui', 'Roger', '1998-07-01', null, 'Instructor'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (6, 'Li', 'Yan', null, '2002-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (7, 'Norman', 'Laura', null, '2003-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (8, 'Olivotto', 'Nino', null, '2005-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (9, 'Tang', 'Wayne', null, '2005-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (10, 'Alonso', 'Meredith', null, '2002-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (11, 'Lopez', 'Sophia', null, '2004-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (12, 'Browning', 'Meredith', null, '2000-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (13, 'Anand', 'Arturo', null, '2003-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (14, 'Walker', 'Alexandra', null, '2000-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (15, 'Powell', 'Carson', null, '2004-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (16, 'Jai', 'Damien', null, '2001-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (17, 'Carlson', 'Robyn', null, '2005-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (18, 'Zheng', 'Roger', '2004-02-12', null, 'Instructor'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (19, 'Bryant', 'Carson', null, '2001-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (20, 'Suarez', 'Robyn', null, '2004-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (21, 'Holt', 'Roger', null, '2004-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (22, 'Alexander', 'Carson', null, '2005-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (23, 'Morgan', 'Isaiah', null, '2001-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (24, 'Martin', 'Randall', null, '2005-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (25, 'Kapoor', 'Candace', '2001-01-15', null, 'Instructor'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (26, 'Rogers', 'Cody', null, '2002-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (27, 'Serrano', 'Stacy', '1999-06-01', null, 'Instructor'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (28, 'White', 'Anthony', null, '2001-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (29, 'Griffin', 'Rachel', null, '2004-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (30, 'Shan', 'Alicia', null, '2003-09-01', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (31, 'Stewart', 'Jasmine', '1997-10-12', null, 'Instructor'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (32, 'Xu', 'Kristen', '2001-7-23', null, 'Instructor'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (33, 'Gao', 'Erica', null, '2003-01-30', 'Student'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator) VALUES (34, 'Van Houten', 'Roger', '2000-12-07', null, 'Instructor'); GO SET IDENTITY_INSERT dbo.Person OFF GO -- 將數據插到 Department 表中。 INSERT INTO dbo.Department (DepartmentID, [Name], Budget, StartDate, Administrator) VALUES (1, 'Engineering', 350000.00, '2007-09-01', 2); INSERT INTO dbo.Department (DepartmentID, [Name], Budget, StartDate, Administrator) VALUES (2, 'English', 120000.00, '2007-09-01', 6); INSERT INTO dbo.Department (DepartmentID, [Name], Budget, StartDate, Administrator) VALUES (4, 'Economics', 200000.00, '2007-09-01', 4); INSERT INTO dbo.Department (DepartmentID, [Name], Budget, StartDate, Administrator) VALUES (7, 'Mathematics', 250000.00, '2007-09-01', 3); GO -- 將數據插到 Course 表中。 INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (1050, 'Chemistry', 4, 1); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (1061, 'Physics', 4, 1); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (1045, 'Calculus', 4, 7); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (2030, 'Poetry', 2, 2); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (2021, 'Composition', 3, 2); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (2042, 'Literature', 4, 2); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (4022, 'Microeconomics', 3, 4); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (4041, 'Macroeconomics', 3, 4); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (4061, 'Quantitative', 2, 4); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (3141, 'Trigonometry', 4, 7); GO -- 將數據插到 OnlineCourse 表中。 INSERT INTO dbo.OnlineCourse (CourseID, URL) VALUES (2030, 'http://www.fineartschool.net/Poetry'); INSERT INTO dbo.OnlineCourse (CourseID, URL) VALUES (2021, 'http://www.fineartschool.net/Composition'); INSERT INTO dbo.OnlineCourse (CourseID, URL) VALUES (4041, 'http://www.fineartschool.net/Macroeconomics'); INSERT INTO dbo.OnlineCourse (CourseID, URL) VALUES (3141, 'http://www.fineartschool.net/Trigonometry'); -- 將數據插到 OnsiteCourse 表中。 INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time]) VALUES (1050, '123 Smith', 'MTWH', '11:30'); INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time]) VALUES (1061, '234 Smith', 'TWHF', '13:15'); INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time]) VALUES (1045, '121 Smith','MWHF', '15:30'); INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time]) VALUES (4061, '22 Williams', 'TH', '11:15'); INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time]) VALUES (2042, '225 Adams', 'MTWH', '11:00'); INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time]) VALUES (4022, '23 Williams', 'MWF', '9:00'); -- 將數據插到 CourseInstructor 表中。 INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (1050, 1); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (1061, 31); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (1045, 5); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (2030, 4); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (2021, 27); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (2042, 25); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (4022, 18); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (4041, 32); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (4061, 34); GO -- 將數據插到 OfficeAssignment 表中。 INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (1, '17 Smith'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (4, '29 Adams'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (5, '37 Williams'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (18, '143 Smith'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (25, '57 Adams'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (27, '271 Williams'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (31, '131 Smith'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (32, '203 Williams'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (34, '213 Smith'); -- 將數據插到 StudentGrade 表中。 INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (2021, 2, 4); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (2030, 2, 3.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (2021, 3, 3); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (2030, 3, 4); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (2021, 6, 2.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (2042, 6, 3.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (2021, 7, 3.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (2042, 7, 4); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (2021, 8, 3); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (2042, 8, 3); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4041, 9, 3.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4041, 10, null); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4041, 11, 2.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4041, 12, null); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4061, 12, null); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4022, 14, 3); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4022, 13, 4); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4061, 13, 4); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4041, 14, 3); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4022, 15, 2.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4022, 16, 2); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4022, 17, null); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4022, 19, 3.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4061, 20, 4); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4061, 21, 2); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4022, 22, 3); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4041, 22, 3.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4061, 22, 2.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (4022, 23, 3); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (1045, 23, 1.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (1061, 24, 4); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (1061, 25, 3); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (1050, 26, 3.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (1061, 26, 3); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (1061, 27, 3); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (1045, 28, 2.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (1050, 28, 3.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (1061, 29, 4); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (1050, 30, 3.5); INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade) VALUES (1061, 30, 4); GO
術語 ui |
定義 搜索引擎 |
Code First spa |
使用代碼建立實體框架模型。模型能夠面向任何現有數據庫或新數據庫。 .net |
上下文 設計 |
表示與數據庫會話的類,用於查詢和保存數據。上下文派生自 DbContext 或 ObjectContext 類。 code |
約定 (Code First) orm |
實體框架用來根據類推斷模型形狀的規則。 |
Database First |
使用 EF 設計器建立面向現有數據庫的實體框架模型。 |
預先加載 |
一種加載相關數據的模式,在這種模式下,對一種實體的查詢會在查詢過程當中也加載相關實體。 |
EF 設計器 |
Visual Studio 中的可視化設計器,可用來使用方框和線建立實體框架模型。 |
Entity |
表示客戶、產品和訂單等應用程序數據的類或對象。 |
實體數據模型 |
描述實體以及實體間關係的模型。 |
顯式加載 |
一種加載相關數據的模式,在此模式下,將經過調用 API 來調用相關對象。 |
Fluent API |
可用於配置 Code First 模型的 API。 |
外鍵關聯 |
實體間的一種關聯,其中,表示外鍵的屬性包括在依賴實體的類中(即,Product 包含一個 CategoryId 屬性)。 |
識別關係 |
一種關係,其中主體實體的主鍵是依賴實體的主鍵的一部分。在這種關係中,沒有主體實體,依賴實體就不能存在。 |
獨立關聯 |
實體間的一種關聯,其中,依賴實體的類中沒有表示外鍵的屬性(即,Product 類包含與 Category 的關係,但沒有 CategoryId 屬性)。實體框架將使用獨立對象來跟蹤這種關係。 |
延遲加載 |
一種加載相關數據的模式,在此模式下,訪問導航屬性時將自動加載相關對象。 |
Model First |
使用 EF 設計器建立實體框架模型,隨後使用此模型來建立新數據庫。 |
導航屬性 |
引用其餘實體的實體屬性(即,Product 包含 Category 導航屬性,而 Category 包含 Products 導航屬性)。 |
關係逆反 |
關係的相對一端,例如,product.Category 和 category.Product。 |
自跟蹤實體 |
從代碼生成模板生成的實體,這種實體有助於 N 層開發。 |
每一個具體類型一張表 (TPC) |
一種映射繼承的方法,其中,層次結構中的每一個非抽象類型都映射到數據庫中單獨的表。 |
每一個層析結構一個表 (TPH) |
一種映射繼承的方法,其中,層次結構中的全部類型都映射到數據庫中的同一個表。鑑別器列用於標識每行所關聯的類型。 |
每一個類型一張表 (TPT) |
一種映射繼承的方法,其中,層次結構中全部類型的公共屬性都映射到數據庫中的同一個表,但每一個類型的惟一屬性都映射到單獨的表。 |
類型發現 |
對應該是實體框架模型的一部分的類型進行標識的過程。 |