Универсальный репозиторий в Entity Framework без технологии «дженериков» - PullRequest
0 голосов
/ 30 января 2012

Как мне создать репозиторий Entity Framework, который управляет всеми видами существующих сущностей?

Но я хочу достичь этого без использования generics, потому что я собираюсь построить некоторые общие элементы управления CRUD WPF, и я не буду знать нужную сущность, находясь во «времени кодирования», просто во время выполнения?

1 Ответ

1 голос
/ 30 января 2012

Вы можете определить EntitySetName объекта во время выполнения, используя следующий код:

internal static EntitySetBase GetEntitySet<TEntity>(this ObjectContext context)
{
    EntityContainer container = context.MetadataWorkspace.GetEntityContainer(context.DefaultContainerName, DataSpace.CSpace);

    EntitySetBase entitySet = container.BaseEntitySets.Where(item => item.ElementType.Name.Equals(typeof(TEntity).Name))
                                                             .FirstOrDefault();

    return entitySet;
 }

Затем ObjectContext имеет метод AddObject(string entitySetName, Object entity) ( документация MSDN ).

Объединяя их, вы можете создать репозиторий, в который вы можете вставить object, определить имя набора сущностей и затем добавить объект.

...