Tôi phải cập nhật một trang web hiện có dựa trên DDS trên cùng của Khuôn khổ thực thể và sử dụng ba mô hình cơ sở dữ liệu khác nhau từ ba cơ sở dữ liệu khác nhau. Và những gì nó cần là một bổ sung đơn giản cho trang ListDetails: một nút xuất sang nút XML ...
Việc thêm nút rất dễ dàng. Việc tạo ra XML cũng không khó. Thách thức là nhận được bảng thích hợp để xuất, đi qua tất cả các bản ghi và các trường và tạo XML dựa trên bất kỳ bảng nào trong số hơn 100 bảng trong hệ thống!
Vì vậy, nút của tôi gọi trình xử lý xuất (ashx) tạo XML dựa trên tên của người mà nó nhận được thông qua các tham số của nó. Mã tôi có là một cái gì đó như thế này:Xuất sang XML từ trang dữ liệu động
Content_CobaEntities Coba = new Content_CobaEntities();
MetadataWorkspace metadataWorkspace = Coba.MetadataWorkspace;
EntityContainer container = metadataWorkspace.GetItems<EntityContainer>(DataSpace.CSpace).First();
string namespaceName = metadataWorkspace.GetItems<EntityType>(DataSpace.CSpace).First().NamespaceName;
EntitySetBase entitySetBase = container.BaseEntitySets.FirstOrDefault(set => set.ElementType.Name == Entity);
Thật không may, điều này chỉ làm việc với một bối cảnh duy nhất và tôi tình cờ có ba. (Nhưng điều này là bối cảnh chính.) (Bên cạnh đó, một tham số thứ hai có thể được sử dụng để xác định bối cảnh thích hợp.) Và mặc dù nó cho phép tôi xác định loại thực thể cần thiết, nó vẫn không cung cấp cho tôi quyền truy cập vào hồ sơ của nó và các trường.
Vì vậy, làm cách nào để nhận dữ liệu cho pháp nhân này? (Bộ lọc không quan trọng; quá trình xuất sẽ trả về tất cả dữ liệu.)
Và không, không có EF4. Không .NET 4. Đây là một dự án VS2008 cũ và không thể được sửa đổi để nhiều, và cũng không nó có thể được nâng cấp ...
Về cơ bản, chuỗi truy vấn chứa hai tham số: ContextID và QueryID. ContextID cho tôi biết bối cảnh nào cần sử dụng và vì tôi chỉ có ba ngữ cảnh khác nhau, một lệnh chuyển đổi đơn giản giải quyết vấn đề này cho tôi. Nhưng một trong các ngữ cảnh chứa hơn 60 truy vấn, mỗi truy vấn liên quan đến một bảng cơ sở dữ liệu duy nhất. Trang dữ liệu động cung cấp cho tôi các tùy chọn để thêm, chỉnh sửa và xóa các bản ghi từ bảng này nhưng nó cần được xuất ở định dạng được quyết định bởi mã tùy chỉnh của tôi. Nhưng với 60 bảng, nó là quá nhiều để viết một tuyên bố chuyển đổi cho mỗi và mọi truy vấn vì vậy tôi cần một cái gì đó chung chung hơn.
Bạn có nói rằng bạn không thể kết nối với một ngữ cảnh EF khác ngoài ngữ cảnh chính không? – WVDominick
Thực ra, trình xử lý xuất cũng phải có sẵn từ các vị trí khác và người dùng cần có khả năng đánh dấu nó. Tôi có thể có được ngữ cảnh thích hợp nhưng bây giờ tôi cần phải lặp qua truy vấn thích hợp, với tất cả các trường và giá trị để tạo XML tùy chỉnh. –