Trong hướng dẫn này, làm thế nào để sử dụng Stored Procedures được lưu giữ từ cơ sở dữ liệu của bạn đến một entity trong Entity Data Model của bạn.
Hướng dẫn cơ bản làm việc với ba thủ tục đơn giản được lưu trữ mà tôi được bổ sung vào cơ sở dữ liệu AdventureWorksLT: InsertCustomer, UpdateCustomer và DeleteCustomer và không liên quan đến dữ liệu liên quan. Xem dưới cùng của bài cho TSQL để tạo ra các thủ tục này.
- Tạo một Entity Data Model các dữ liệu mẫu Entity Data Model Wizard (để được hỗ trợ với các bước này, xem Tạo Entity Data Model)
- Nhấp chuột phải vào thực thể khách hàng và chọn "Stored Procedure Mapping" từ trình đơn
- Ở đây bạn sẽ thấy tùy chọn để lập bản đồ một chức năng Insert, một chức năng cập nhật và chức năng một Xóa.
Lưu ý: Thủ tục Mappings lưu trữ là một trong hai trang của xem chi tiết bản đồ Biểu tượng trên cùng bên trái sẽ đưa bạn đến Mappings table cho thực thể..)
- Sử dụng trình đơn thả xuống cho bạn chọn Insert Function, chọn các thủ tục InsertCustomer.
Sau khi lựa chọn phù hợp với thủ tục được lưu trữ, bạn sẽ có khả năng bản đồ các thông số cần thiết cho các thủ tục lưu trữ đến các tính chất của thực thể. Theo mặc định, tên phù hợp sẽ được ánh xạ với nhau rồi. Các lợi ích của việc lập bản đồ các tham số thủ tục lưu trữ các tài sản thực thể là bạn sẽ không cần phải viết code để nuôi các mảnh xác của dữ liệu đến các thủ tục lưu trữ; Entity Framework sẽ sử dụng các bản đồ để làm nhiệm vụ đó.
- Loại NewCustomerID tài sản vào các cột Kết quả Bindings và móc nó lên đến tài sản ID khách hàng.
Các thủ tục được lưu trữ sẽ trả về ID mới cho dòng chèn. Lập bản đồ này bảo đảm rằng các mã mới được đẩy lùi vào thực thể mà người dùng đang làm việc với.
- Cập nhật bản đồ và Xóa chức năng. Như với chức năng chèn, công cụ sẽ tự động kết hợp bản đồ cột và những tài sản.
Hai lưu ý quan trọng về việc sử dụng ánh xạ chức năng.
1) ánh xạ chức năng yêu cầu bạn đồ cả ba của funcitons, Insert, Update và Delete. Nếu bạn chỉ có một hoặc hai bản đồ của các chức năng, mô hình sẽ không xác nhận.
2) Đối tượng với đề tiết được Entity Tham khảo (ví dụ như SalesOrderHeader.Customer là một thực thể tham khảo, trong khi SalesOrderHeader.SalesOrderDetails Bộ sưu tập là một thực thể), sẽ có yêu cầu đặc biệt để lập bản đồ các phím nước ngoài. Trong một Chèn hoặc thủ tục cập nhật, điều này là khá thẳng về phía trước, nhưng trong một thủ tục Xoá, nó có thể cần thêm các tham số cho các tyou tha thủ tục không sử dụng trong thủ tục chính nó, nhưng chỉ có để đáp ứng các quy tắc của mô hình. Xem bài đăng blog cho thêm thông tin: Xóa Procs Lưu trữ và Navigations Trong liệu Entity Mẫu
Sử dụng thủ tục được lưu trữ mới
Bây giờ mà các thủ tục được lưu giữ đã được ánh xạ, nó không phải là cần thiết để gọi trực tiếp trong mã. Bất kỳ SaveChanges thời gian được gọi là, Entity Framework sẽ sử dụng bản đồ của bạn được lưu trữ các thủ tục cần thiết cho bất cứ chèn, cập nhật và xóa.
INSERT
USE [AdventureWorksLT]
CREATE Procedure [dbo].[InsertCustomer]
@NameStyle bit,
@Title nvarchar(8),
@FirstName nvarchar(50),
@MiddleName nvarchar(50),
@LastName nvarchar(50),
@Suffix nvarchar(10),
@CompanyName nvarchar(128),
@SalesPerson nvarchar(256),
@EmailAddress nvarchar(50),
@Phone nvarchar(25),
@PasswordHash varchar(128),
@PasswordSalt varchar(10),
@ModifiedDate datetime,
@Inactive bit
AS
INSERT INTO [AdventureWorksLT].[SalesLT].[Customer]
([NameStyle]
,[Title]
,[FirstName]
,[MiddleName]
,[LastName]
,[Suffix]
,[CompanyName]
,[SalesPerson]
,[EmailAddress]
,[Phone]
,[PasswordHash]
,[PasswordSalt]
,[ModifiedDate]
,[Inactive])
VALUES
(
@NameStyle,
@Title,
@FirstName ,
@MiddleName,
@LastName ,
@Suffix ,
@CompanyName ,
@SalesPerson ,
@EmailAddress,
@Phone,
@PasswordHash,
@PasswordSalt,
@ModifiedDate,
@Inactive )
select SCOPE_IDENTITY() as NewCustomerID
UPDATE
USE [AdventureWorksLT]
CREATE PROCEDURE [dbo].[UpdateCustomer]
@CustomerID int,
@NameStyle bit,
@Title nvarchar(8),
@FirstName nvarchar(50),
@MiddleName nvarchar(50),
@LastName nvarchar(50),
@Suffix nvarchar(10),
@CompanyName nvarchar(128),
@SalesPerson nvarchar(256),
@EmailAddress nvarchar(50),
@Phone nvarchar(25),
@PasswordHash varchar(128),
@PasswordSalt varchar(10),
@ModifiedDate datetime,
@Inactive bit
AS
UPDATE [AdventureWorksLT].[SalesLT].[Customer]
SET [NameStyle] = @NameStyle,
[Title] = @Title,
[FirstName] = @FirstName,
[MiddleName] = @MiddleName,
[LastName] = @LastName,
[Suffix] = @Suffix,
[CompanyName] = @CompanyName,
[SalesPerson] = @SalesPerson,
[EmailAddress] = @EmailAddress,
[Phone] = @Phone,
[PasswordHash] = @PasswordHash,
[PasswordSalt] = @PasswordSalt,
[ModifiedDate] = @ModifiedDate,
[Inactive] = @Inactive
WHERE CustomerID=@CUstomerID
DELETE
USE [AdventureWorksLT]
CREATE PROCEDURE [dbo].[DeleteCustomer]
@CustomerID int
AS
DELETE FROM Customer
WHERE CustomerID=@CUstomerID
Chúc bạn thành công.
DangTrung.
Không có nhận xét nào:
Đăng nhận xét