没有“泛型”技术的实体框架上的通用存储库

时间:2012-01-30 13:16:31

标签: entity-framework generics entity-framework-4 entity-framework-4.1

如何构建管理所有现有实体的Entity Framework存储库?

但是我想在不使用generics的情况下实现这一点,因为我将构建一些通用的CRUD WPF控件,而在“编码时间”中,我只是在运行时才知道正确的实体? / p>

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码在运行时确定对象的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 documentation)。

将那些你可以创建一个可以传递object的存储库组合起来,确定实体集名称,然后添加对象。