Используя один и тот же класс сущностей для двух идентичных таблиц? - PullRequest
1 голос
/ 18 октября 2010

У меня есть веб-сервер, который динамически генерируется на основе таблицы в моей структуре сущностей. Сейчас принимается решение иметь идентично структурированную таблицу с другим набором данных, и мне нужен какой-то способ динамически переназначить свой элемент управления другой таблице. (Я сделал все для того, чтобы сохранить одну таблицу и просто добавить флаг, поэтому давайте не будем идти по этой дороге, пожалуйста)

Я мог бы сделать это, используя linq-to-entity, добавив новую таблицу в мою модель сущностей и просто условно запросив одну или другую таблицу в модели. Проблема в том, что результаты, возвращаемые запросом, будут коллекциями двух разных классов сущностей. Это создает проблему со всем кодом, который работает с этими коллекциями, так как он должен быть модифицирован и потенциально дублирован, чтобы эта работа работала.

Так что, если я могу каким-то образом отобразить результаты запросов linq так, чтобы независимо от того, к какой таблице я запрашиваю, результаты принадлежали к одному и тому же типу класса, это минимизирует влияние на остальную часть кода. Как бы я мог выполнить что-то вроде приведенного ниже, где две разные таблицы могут быть материализованы как список одного и того же типа класса?

Обратите внимание, что я использую .NET 3.5

var formFooQuery;
if(mode1 == true)
{
        formFooQuery = from r in EntitiesContext.Foo1Set.Include("Foo1Data")
                                where r.FooId == fooId
                                select r;
}
else
{
        formFooQuery = from r in EntitiesContext.Foo2Set.Include("Foo2Data")
                                where r.FooId == fooId
                                select r;
}
List<Foo> foos = formFooQuery.ToList<Foo>();

Ответы [ 2 ]

1 голос
/ 23 ноября 2011
if(mode1 == true)    
{    
        formFooQuery = from r in EntitiesContext.Foo1Set.Include("Foo1Data")    
                                where r.FooId == fooId    
                                select new FooViewModel { FooId = r.FooId, FooName = r.FooName };    
}    
else    
{    
        formFooQuery = from r in EntitiesContext.Foo2Set.Include("Foo2Data")    
                                where r.FooId == fooId    
                                select new FooViewModel { FooId = r.FooId, FooName = r.FooName };    
}    
List<FooViewModel> foos = formFooQuery.ToList<FooViewModel>();    
1 голос
/ 18 октября 2010

Вы можете сделать это в Entity Framework, используя POCO Support .

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