2009-10-08 35 views
7

Tôi có hai bảng từ hai bối cảnh dữ liệu khác nhau. Mặc dù cả hai bảng đều từ cùng một cơ sở dữ liệu, hai datacontexts riêng biệt tồn tại.Làm cách nào để tham gia bảng bên trong từ ngữ cảnh dữ liệu khác nhau?

Thông báo lỗi:

Các truy vấn chứa tham chiếu đến mục xác định trên một bối cảnh dữ liệu khác nhau.

Làm cách nào để giải quyết vấn đề này? Bất kỳ trợ giúp được đánh giá cao. Cảm ơn.

+1

Ý nghĩa của quan điểm kinh doanh là có 2 datacontexts như thế nào? Thông thường tôi khuyên bạn nên luôn luôn có 1 datacontext cho mỗi cơ sở dữ liệu và làm việc với ... – Robban

+2

Nó có thể không có ý nghĩa, nhưng đây là những gì tôi đang làm việc với. – jinsungy

+0

Thực hành tốt của nó để có một ngữ cảnh để đọc và một để viết – skyfoot

Trả lời

0

Tại sao bạn không chỉ bao gồm các bảng cần thiết trong mỗi ngữ cảnh?

+1

Tôi nhận được lỗi “Thành viên này được xác định nhiều lần”. – jinsungy

+0

Sau đó, bạn có thể làm điều gì đó sai trái. –

+0

EF không tính đến không gian tên khi bạn có nhiều mô hình. Bạn không thể có các bảng được đặt tên giống hệt nhau trong nhiều mô hình. Đừng tin tôi? Thử nó ! –

2

Bạn không. Các bối cảnh dữ liệu có thể có quan điểm không nhất quán của cơ sở dữ liệu.

6

Nếu mã của bạn làm điều gì đó dọc theo dòng:

from a in dc1.TableA 
join b in dc2.TableB on a.id equals b.id 
select new { a, b } 

... chỉ cần thay đổi nó để:

from a in dc1.TableA 
join b in dc1.GetTable<TableB>() on a.id equals b.id 
select new { a, b } 

Các L2S DataContext sử dụng các thuộc tính trên lớp, vì vậy nếu bạn sử dụng GetTable trên một datacontext khác với một bảng được gắn vào nó sẽ chỉ lấy bảng, cột, vv thuộc tính từ lớp def và sử dụng nó như thể nó là một phần của DC bạn đang sử dụng trong truy vấn ...

1

Một giải pháp khác là thay đổi kết quả thành Danh sách().

var query = (from a in dc1.TableA 
      join b in dc2.TableB on a.id equals b.id 
      select new { a, b }).ToList() 
Các vấn đề liên quan