Có cách nào để thực hiện truy vấn cơ sở dữ liệu chéo trong Khuôn khổ thực thể không? Hãy tưởng tượng tôi có hai Entities User và Post, thực thể người dùng nằm trong database1 và Post nằm trong database2, có nghĩa là các thực thể đó nằm trong các cơ sở dữ liệu riêng biệt. Làm cách nào để tôi nhận được bài đăng của người dùng trong Khung thực thể?Truy vấn cơ sở dữ liệu chéo trong EF
Trả lời
Ngữ cảnh EF không hỗ trợ truy vấn cơ sở dữ liệu chéo. Bạn cần hiển thị các bài viết trong database1 thông qua SQL View (or synonym) và sử dụng nó như một phần của cơ sở dữ liệu đó.
+1 cảm ơn Ladislav, bạn đã cứu ngày của tôi. – saber
Tất nhiên điều này sẽ không hoạt động chút nào nếu cơ sở dữ liệu bạn muốn tham gia không phải là cục bộ. Link server join cũng hoạt động kém. Tôi muốn rằng Bối cảnh sẽ tôn trọng tùy chọn cấu hình cơ sở dữ liệu sở hữu cơ sở dữ liệu vì điều này có vẻ giống như một vấn đề xác thực cơ bản có thể dễ dàng khắc phục. – ewahner
Không, bạn không thể. Bạn sẽ phải tạo ra các bối cảnh và tự mình tham gia. Xem here.
Bạn có thể giải quyết thủ thuật cơ sở dữ liệu, tạo chế độ xem trong một cơ sở dữ liệu phản ánh một bảng trong một cơ sở dữ liệu khác.
Bạn có thể sử dụng ExecuteStoreQuery
, như:
var myOb = context.ExecuteStoreQuery<PlainOldClrObject>(
@"select *
from db1.dbo.table1 t1
join db2.dbo.table2 t2
on t2.t1_id = t1.id
where t1.id = {0}",
table1Id).FirstOrDefault();
Bạn sẽ phải xác định một lớp PlainOldClrObject
với các cột như các thuộc tính với getters/setters, như:
class PlainOldClrObject
{
public int Id (get; set; }
public int Name (get; set; }
...
}
+1 điểm tốt. Giải pháp đơn giản nhất là khá tốt nhất. –
Tôi biết đây là một chủ đề cũ, nhưng, thực sự. điều này là khả thi. Nếu các cơ sở dữ liệu trên cùng một máy chủ, thì tất cả những gì bạn cần làm là sử dụng DbCommandInterceptor
.
Ví dụ: nếu tôi đính kèm DbCommandInterceptor
đến MyContext,
Tôi có thể chặn tất cả các lệnh thực hiện và thay thế (các) Bảng được chỉ định trong truy vấn bằng đường dẫn đầy đủ của tôi.
public override void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
{
// Here, I can just replace the CommandText on the DbCommand - but remember I
// want to only do it on MyContext
var context = contexts.FirstOrDefault() as MyContext;
if (context != null)
{
command.CommandText = command.CommandText
.Replace("[dbo].[ReplaceMe1]", "[Database1].[dbo].[Customers]")
.Replace("[dbo].[ReplaceMe2]", "[Database2].[dbo].[Addresses]")
.Replace("[dbo].[ReplaceMe3]", "[Database3].[dbo].[Sales]");
}
base.ReaderExecuting(command, interceptionContext);
}
Điều tốt đẹp về phương pháp này là ánh xạ mô hình EF vẫn hoạt động đúng và tôn trọng Thuộc tính cột, không yêu cầu lượt xem và không yêu cầu lưu trữ procs.
- 1. MongoDB truy vấn cơ sở dữ liệu chéo
- 2. Làm cách nào để xây dựng truy vấn cơ sở dữ liệu chéo trong PHP?
- 3. Cơ sở dữ liệu về độ phức tạp của truy vấn cơ sở dữ liệu
- 4. Truy vấn cơ sở dữ liệu chéo, tham gia các ưu điểm và nhược điểm
- 5. Dừng khởi tạo cơ sở dữ liệu EF cho DefaultMembershipProvider
- 6. Truy vấn không trả lại gì khi có dữ liệu trong cơ sở dữ liệu
- 7. Thay đổi tên cơ sở dữ liệu và truy vấn cơ sở dữ liệu chéo trong thủ tục được lưu trữ
- 8. Các truy vấn cơ sở dữ liệu sẽ ở đâu?
- 9. CodeIgniter giới hạn truy vấn cơ sở dữ liệu
- 10. Truy vấn Hibernate trên cơ sở dữ liệu
- 11. truy vấn cơ sở dữ liệu khác nhau
- 12. Truy vấn kiểu cơ sở dữ liệu với Firebase
- 13. Enums EF 5.0 - Cơ sở dữ liệu Đầu tiên
- 14. Cơ sở dữ liệu chéo tham gia vào sqlalchemy
- 15. Sử dụng chức năng cơ sở dữ liệu trong truy vấn dữ liệu
- 16. Vấn đề cơ sở dữ liệu Flask
- 17. Bí danh cơ sở dữ liệu chéo của SQL Server
- 18. Các mối quan hệ cơ sở dữ liệu chéo EF4
- 19. LINQ Truy vấn để chèn dữ liệu vào cơ sở dữ liệu
- 20. dữ liệu phân cấp trong cơ sở dữ liệu: truy vấn đệ quy so với bảng đóng so với cơ sở dữ liệu đồ thị
- 21. Cơ sở dữ liệu Truy cập SQL trong Excel VBA
- 22. Truy vấn Cơ sở dữ liệu MDB của Microsoft Truy cập bằng LINQ và C#
- 23. Truy vấn HQL có luôn truy cập cơ sở dữ liệu và nhận kết quả không?
- 24. PROJECTION trong cơ sở dữ liệu vertica
- 25. Truy vấn LINQ có thể truy xuất BLOB từ Cơ sở dữ liệu Sql không?
- 26. Tăng số lượt truy cập trong cơ sở dữ liệu
- 27. Làm cho EF sử dụng cơ sở dữ liệu cục bộ trong thư mục App_Data
- 28. Cơ sở dữ liệu Oracle đang treo vô hạn trong các truy vấn UPDATE
- 29. Cách nhận trạng thái truy vấn đang chạy trong cơ sở dữ liệu postgresql
- 30. Tham gia truy vấn của hai cơ sở dữ liệu trong mã vạch
bản sao có thể có của [Khuôn khổ thực thể - cách quản lý các bảng trong cơ sở dữ liệu khác nhau nhưng trên cùng một máy chủ?] (Http://stackoverflow.com/questions/11544516/entity-framework-how-to-manage-tables-in -different-databases-but-on-the-same-s) – ken2k
Có, tôi đã tiếp xúc với Bài đăng trong cơ sở dữ liệu1, nhưng tôi không hiểu, ý của bạn là gì ** thông qua SQL View hoặc bí danh **? – saber