100 を超えるテーブルを含む DataContext (Linq to Sql) があります。これらすべてのテーブルのリストを取得して、それらをコンソールに出力することはできますか? これはばかげた質問かもしれません。
ありがとう。
100 を超えるテーブルを含む DataContext (Linq to Sql) があります。これらすべてのテーブルのリストを取得して、それらをコンソールに出力することはできますか? これはばかげた質問かもしれません。
ありがとう。
上記よりもはるかに簡単で、反射は必要ありません。Linq to SQL には、すべてのテーブルの列挙を取得するために使用できる Mapping プロパティがあります。
context.Mapping.GetTables();
これはリフレクションを介して行うことができます。基本的に、DataContextクラスのプロパティを反復処理します。プロパティごとに、そのプロパティのジェネリック パラメーターの型にTableAttribute属性があるかどうかを確認します。その場合、そのプロパティはテーブルを表します。
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);
}
}
}
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);
}
}
}