如何构建管理所有现有实体的Entity Framework存储库?
但是我想在不使用generics
的情况下实现这一点,因为我将构建一些通用的CRUD WPF控件,而在“编码时间”中,我只是在运行时才知道正确的实体? / p>
答案 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
的存储库组合起来,确定实体集名称,然后添加对象。