Tôi có một DataContext (LINQ to Sql) với hơn 100 bảng, có thể lấy danh sách tất cả các bảng đó và cho phép in chúng vào bảng điều khiển không? Đây có thể là một câu hỏi ngớ ngẩn.LINQ: Nhận danh sách tất cả các bảng trong DataContext
Cảm ơn.
Tôi có một DataContext (LINQ to Sql) với hơn 100 bảng, có thể lấy danh sách tất cả các bảng đó và cho phép in chúng vào bảng điều khiển không? Đây có thể là một câu hỏi ngớ ngẩn.LINQ: Nhận danh sách tất cả các bảng trong DataContext
Cảm ơn.
Dễ dàng hơn nhiều so với ở trên và không cần phản ánh. LINQ to SQL có một thuộc tính Mapping mà bạn có thể sử dụng để có được một liệt kê tất cả các bảng.
context.Mapping.GetTables();
Bạn có thể thực hiện việc này thông qua phản ánh. Về cơ bản, bạn lặp lại các thuộc tính trong lớp DataContext của mình. Đối với mỗi thuộc tính, hãy kiểm tra xem loại thông số chung của thuộc tính đó có thuộc tính TableAttribute hay không. Nếu vậy, thuộc tính đó đại diện cho một bảng:
using System.Reflection;
using System.Data.Linq.Mappings;
PropertyInfo[] properties = typeof(MyDataContext).GetProperties();
foreach (PropertyInfo property in properties)
{
if(property.PropertyType.IsGenericType)
{
object[] attribs = property.PropertyType.GetGenericArguments()[0].GetCustomAttributes(typeof(TableAttribute), false);
if(attribs.Length > 0)
{
Console.WriteLine(property.Name);
}
}
}
dc= new myDataContext();
var listaTablas = (from tables in dc.Mapping.GetTables() select tables.TableName).ToList();
using System.Reflection;
using System.Data.Linq.Mappings;
PropertyInfo[] properties = typeof(MyDataContext).GetProperties();
foreach (PropertyInfo property in properties)
{
if(property.PropertyType.IsGenericType)
{
object[] attribs = property.PropertyType.GetGenericArguments()[0].GetCustomAttributes(typeof(TableAttribute), false);
if(attribs.Length > 0)
{
Console.WriteLine(property.Name);
}
}
}
Tốt, tôi không biết về điều đó. –
whooo hoo thậm chí còn tốt hơn! – Sergey
Vâng, tôi cứ tự mình tìm kiếm những thứ như thế. Nó luôn luôn thú vị để vượt qua một ngày :). –