Создание цепочки MapHierarchy () для добавления новых дел в код EF - PullRequest
1 голос
/ 08 октября 2010

Я надеюсь, что ответ на этот вопрос будет сумасшедшим, похоже, что должно быть

Текущий код:

MapHierarchy().Case<Folder>(f => new { FolderId = f.Id, 
                                        f.Name,
                                        Type = 1 })
                      .Case<RootFolder>(f => new { f.RootName,
                                                    Type = 2 })
                      .ToTable("Folder");

Другой метод:

void AddAnotherFolder(something)
{
   something.Case<RootFolder>(f => new { f.RootName, Type = 2 })
}

Что я хотел бы сделать, это передать этот метод в строку MapHierarchy - это возможно?

Что-то вроде ...

MapHierarchy().Case<Folder>(f => new { FolderId = f.Id, 
                                        f.Name,
                                        Type = 1 })
                      .Case<RootFolder>(f => new { f.RootName,
                                                    Type = 2 })
                      .AddAnotherFolder(this)
                      .ToTable("Folder");

Это похоже на вопрос linq, было бы ОЧЕНЬ круто, если бы оно могло

1 Ответ

1 голос
/ 19 октября 2010

Посмотрите на сигнатуру метода для Case<T>.Вы должны иметь возможность создать аналогичный метод расширения в статическом классе с предложениями where для ваших конкретных типов.Это может выглядеть примерно так:

public static class ExtensionClass
{
    public static HierarchyEntityMap<TEntity> AddAnotherFolder<TEntity>(this HierarchyEntityMapGenerator<TEntity> source) where TEntity:RootFolder
    {
       return source.Case<TEntity>(f => new { f.RootName, Type = 2 });
    }
}

И, чтобы назвать это, вы просто сделаете .AddAnotherFolder() без (этого).

[НЕ ИСПЫТАНО, НО ЭТО БУДЕТ ЧТО-ТО КАКЧТО]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...