Автор просто издевается над хранилищем, а не над сущностями. EntityFramework генерирует ObjectQueries, но он оборачивает их, и его хранилище возвращает IObjectQueries. Он делает это, чтобы легко смоделировать данные, а затем во время сохранения он просто проверяет сущности.
Если вы просто пытаетесь создать «фиктивное» хранилище, вы можете создать свой собственный шаблон T4, выполнить итерации по файлу edmx и сгенерировать код. Но нет причин для генерации POCOS? Они уже существуют, зачем вам их воссоздавать? Он абстрагировал все в «общий» FakeObjectSet, так что на самом деле не так много кода для написания?
Вы пытаетесь сгенерировать это:
public IObjectSet<Blog> Blogs
{
get
{
return _blogs ?? (_blogs = new FakeObjectSet<Blog>());
}
set
{
_blogs = value as FakeObjectSet<Blog>;
}
}
private FakeObjectSet<Blog> _blogs;
Если так, я собираюсь догадаться, что вы проведете больше времени с T4, тогда вы просто напишите это.
Пример T4 без объявления класса ... вы можете сделать полный t4, выполнив этот блог
<#
foreach (EntitySet set in container.BaseEntitySets.OfType<EntitySet>())
{
#>
public IObjectSet<<#=MultiSchemaEscape(set.ElementType, code)#>>
{
get{
return <#=code.FieldName(set)#> ?? ( <#=code.FieldName(set)#> = FakeObjectSet<<#=MultiSchemaEscape(set.ElementType, code)#>>("<#=set.Name#>"));
}
set{
<#=code.FieldName(set)#> = value as FakeObjectSet<<#=MultiSchemaEscape(set.ElementType, code)#>>("<#=set.Name#>");
}
}
private FakeObjectSet<<#=MultiSchemaEscape(set.ElementType, code)#>> <#=code.FieldName(set)#>;
<#
}
#>
Что бы сгенерировать этот код:
public IObjectSet<Blogs>{
get{
return _Blogs?? ( _Blogs = FakeObjectSet<Blog>("Blogs"));
}
set{
_Blogs= value as FakeObjectSet<Class>("Blogs");
}
}
private FakeObjectSet<Blog> _Blogs;
Примечание.
IObjectSet содержится в System.Data, поэтому добавьте ссылку на System.Data.Entity.dll