Tôi đang làm việc trên một ứng dụng web ASP.NET MVC 4. Tôi đang sử dụng Entity Framework làm lớp truy cập dữ liệu, sử dụng phương pháp tiếp cận cơ sở dữ liệu đầu tiên (.edmx
tệp).Nối các bảng từ hai cơ sở dữ liệu bằng cách sử dụng khung thực thể
Hiện tại tôi gặp sự cố khi tham gia các bảng được xác định bên trong hai cơ sở dữ liệu khác nhau (ví dụ: tôi có hai tệp .edmx
).
Ví dụ nếu tôi muốn tham gia bàn tôi đang thực hiện các truy vấn sau đây: -
public ActionResult AutoComplete(string term)
{
var tech = repository.AllFindTechnolog(term).Take(100);//Call to the first database
var resources = repository.GetResources(tech.Select(a => a.IT360ID.Value).ToArray(), false);//call to the second database
var query = from techItems in tech
join resourcesItems in resources
on techItems.IT360ID.Value equals resourcesItems.RESOURCEID // join based on db2ID
orderby techItems.PartialTag
select new //code goes here
return Json(query, JsonRequestBehavior.AllowGet);
}
tôi sẽ có hai cuộc gọi riêng biệt để các cơ sở dữ liệu, và tham gia vào bên trong máy chủ ứng dụng, mà không phải là tốt nhất giải pháp định hướng hiệu suất. Lý tưởng nhất là sự tham gia sẽ xảy ra hoàn toàn bên trong cơ sở dữ liệu.
Tôi biết rằng thủ tục được lưu trữ sẽ cho phép tôi tham gia các bảng từ cơ sở dữ liệu khác nhau hoàn toàn trên máy chủ, nhưng tôi không muốn sử dụng SP vì nó sẽ làm cho mã của tôi ít bảo trì hơn và ít kiểm tra hơn.
Vì vậy, tôi đang tìm kiếm giải pháp mà tôi có thể thực hiện việc tham gia bằng cách sử dụng khung thực thể và kết quả trong một cơ sở dữ liệu tham gia?
Ý tưởng chính, là chúng ta đã chọn để làm việc với Entity Framework như lớp truy cập dữ liệu của chúng tôi là nó cung cấp các tính năng chính sau: - 1. mã truy cập dữ liệu được tuân thủ và thử nghiệm như là một phần của toàn bộ ứng dụng. dễ kiểm tra hơn và cung cấp thời gian phát triển nhanh so với các thủ tục được lưu trữ.2, EF cung cấp một lớp trên cơ sở dữ liệu và sản phẩm của chúng tôi có thể hoạt động trên các nhà cung cấp cơ sở dữ liệu khác nhau. và như tôi đã đề cập rằng chức năng duy nhất chúng tôi hiện có phụ thuộc trực tiếp vào cơ sở dữ liệu là thủ tục lưu trữ để thực hiện tìm kiếm trước –
nhưng nếu tôi muốn bắt đầu tạo chế độ xem cho các chức năng khác nhau, thì tôi sẽ mất đi những ưu điểm mà EF cung cấp. vì vậy hãy để tôi xây dựng lại câu hỏi ban đầu là cách tiếp cận hiện tại của tôi để lấy dữ liệu liên quan từ hai cơ sở dữ liệu bằng cách sử dụng hai câu lệnh sql riêng biệt và sau đó kết hợp dữ liệu trên máy chủ ứng dụng được coi là thiết kế rất xấu? Mặc dù tôi sẽ có hai truy vấn riêng biệt nhưng chúng rẻ hơn so với câu lệnh sql tham gia duy nhất ... –
Tôi có thể có một giải pháp cho bạn, nhưng tôi có một câu hỏi: Bạn đang chọn gì trong biến 'query'? Bạn có đang lấy dữ liệu từ cả hai ngữ cảnh hay chỉ từ một trong số chúng (tức là chỉ lấy các mục trong 'công nghệ' tồn tại trong' tài nguyên')? – IronMan84