2017-01-06 12 views
6

Vì vậy, tôi làm việc tại một công ty có nhiều bảng có tên khác nhau, nhưng cấu trúc giống hệt nhau (ngày, giờ, giá trị). Những gì tôi muốn để có thể làm là có chương trình của tôi (C# hoặc LINQ/LINQPad) chạy qua các bảng này và truy vấn một hàng cụ thể để tôi có thể chắc chắn rằng tất cả chúng đã được cập nhật đúng cách. Điều này có thể thực hiện được không?Làm thế nào để bạn truy vấn một số bảng cùng một lúc được đưa ra một danh sách các tên bảng như chuỗi?

Cho đến nay đoàn tàu của tôi đã nghĩ như vậy. Biết rằng mỗi tên bảng sẽ cung cấp cho nó một lớp khác, tôi đang cố gắng để có được giá trị từ bảng. Tôi có thể lấy bảng bằng cách sử dụng mã tại đây

DataContext dc = new DataContext(); 
var myTable = (ITable)dc.GetType().GetProperty("Table").GetValue(dc, null); 

Vấn đề của tôi là cố gắng lấy các cột ra khỏi bảng này bằng phương pháp tương tự. Tuy nhiên, bên dưới là ném một lỗi:

foreach(var e in myTable) 
{ 
    double myValue = (double)e.GetType().GetProperty("Value").GetValue(e, null); 
} 

Vì vậy, khi tôi đã xem xét tất cả các thuộc tính của e.GetType(), tôi nhận thấy nó có 2, một trong số đó là bối cảnh, vì vậy tôi đã đi khám phá ở đó. Tuy nhiên, lớp tiếp theo xuống dường như là một kết thúc chết của siêu dữ liệu mà không có dữ liệu thực tế sắp ra khỏi vòng lặp của tôi. Tôi thậm chí có đi đúng hướng không? Một khi tôi nhận được rào cản này, nó sẽ dễ dàng đủ cho tôi để làm cho một danh sách và nhận được kết quả của tôi theo cách đó. Bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơn.

+0

Thứ gì đó như 'foos.Select (f => newModelModel {Source = 'foos', X = fX, Y = fY}). Union (bars.Select (b => new CommonModel {Source = 'bars', X = bX, Y = bY}) '? –

Trả lời

1

Nếu bạn cần truy vấn nhiều bảng bằng cách khóa chính (EntityKey trong bối cảnh db), sau đó ObjectContext có một phương pháp gọi là GetObjectByKey cho phép bạn để có được đối tượng bằng cách EntityKey Vì vậy, bạn cần phải xây dựng chỉ là một EntityKey. Theo MSDN article, nó là khá đơn giản,

DataContext dc = new DataContext(); 
EntityKey key = new EntityKey("DataContext.Table","Id", 123); 
dynamic entity = dc.GetObjectByKey(key); 

Bạn có thể tạo một giao diện đó là chung cho tất cả các bảng (entites) có cùng cấu trúc và đúc tượng của bạn để giao diện, hoặc chỉ sử dụng dynamic.

Các vấn đề liên quan