Рейтинг:
31
AshishVishwakarma
Привет,
У меня есть решение по этому поводу, но я нашел его менее полезным в реальном времени, потому что он не динамичен, я получил другое решение, используя отражение.
В этом я нахожу все типы выполняемой в данный момент сборки, поэтому мне приходится вручную удалять программы и TestDBEntities.
using System;
using System.Reflection;
namespace RetrievingORMTablesUsingReflection
{
class Program
{
TestDBEntities DbOrm = new TestDBEntities();
static void Main(string[] args)
{
Assembly A = Assembly.Load(Assembly.GetExecutingAssembly().FullName);
Type[] Types = A.GetTypes();
foreach (Type T in Types)
{
if (T.Name != "Program" && T.Name != "TestDBEntities")
Console.WriteLine(T.Name);
}
Console.Read();
}
}
}
Рейтинг:
1
netfed
Вероятно, лучший способ перечислить сущности, вероятно, таков:
private void PopulateTableNames()
{
List<string> listOfTables= new List<string>();
tabeller.Clear();
var metadata = ((IObjectContextAdapter)db).ObjectContext.MetadataWorkspace;
var tables = metadata.GetItemCollection(DataSpace.SSpace)
.GetItems<EntityContainer>()
.Single()
.BaseEntitySets
.OfType<EntitySet>()
.Where(s => !s.MetadataProperties.Contains("Type")
|| s.MetadataProperties["Type"].ToString() == "Tables");
var PropertiesInTables = tables.Select(s => s.ElementType.Properties).ToList();
foreach (var table in tables)
{
var tableName = table.MetadataProperties.Contains("Table")
&& table.MetadataProperties["Table"].Value != null
? table.MetadataProperties["Table"].Value.ToString()
: table.Name;
var tableSchema = table.MetadataProperties["Schema"].Value.ToString();
listOfTables.Add(tableName);
}
}
Внимание также должно быть обращено на эту строку в приведенном выше примере кода:
var PropertiesInTables = tables.Select(s => s.ElementType.Properties).ToList();
Этот запрос Linq также дает вам поля (свойства) каждой таблицы.
[От romiller.com]
Dave Kreskowiak
Спросил И ответил четыре года назад.
netfed
Ну, вот и все :-) И для всех остальных, кто читает это; это прекрасное обновление
CHill60
"это прекрасное обновление"... на ваш взгляд. Дело в том, что это форум вопросов и ответов, а не ссылка.
0x01AA
Член клуба примерно с 11 лет, титульный студент. Чего вы ожидаете от других : -)?
netfed
Ага! Я этого не видел. Я обновил свой профиль. Но, тем не менее, вполне возможно, что я стану студентом еще раз в своей жизни :-)