[ASP.NET MVC] Interfejs a operacje na bazie danych

0

Część wszystkim.

Mam w projekcie kilka modeli które dziedziczą wspólny interfejs. Są to charakterystyki opisujące produkt. Każdy z obiektów implementuje interfejs ICommonData

    interface ICommonData
    {
        int ID { get; set; }
        string Name { get; set; }
        bool Locked { get; set; }
    }

Dla uproszczenia i zmniejszenia kodu chciałbym zbudować tylko po jednej metodzie kontrolera obsługującej zdarzenia update, save, change ..... jak i również po jednym widoku.

W EF np operacje odczytu dokonywane są poprzez:

var mod = context.Model.Where(m => (warunek).FirstOrDefault();

Jak mając interfejs poradzić sobie z operacjami na bazie dla poszczególnych modeli ?

1

Ten interface ułatwi Ci to tylko w przypadku warunków po Id czy Name, całą resztę warunków i tak musisz robić po konkretnych typach modeli.

tak czy owak, to możesz przecież z

var mod = context.Model.Where(m => (warunek)).FirstOrDefault();

zrobić:

Func<ICommonData, bool> filterMethod = delegate(< delegat na metodę filtrującą  >);
var mod = context.Model.Where(filterMethod).FirstOrDefault(); 

// lub poprostu:
var mod = context.Model.Where(<Metoda filtrująca>).FirstOrDefault(); 

ps:tak w ogóle, możez połączyć .Where() z .FirstOrDefault() i zrobić:

var mod = context.Model.FirstOrDefault(m => (warunek));
0

Nie do końca mnie zrozumiałeś, w linii

var mod = context.Model.Where(m => (warunek)).FirstOrDefault();

w miejsce "Model" w rzeczywistości będą podstawiane różne klasy modeli.

A więc

var mod = context.Brand.Where(m => (warunek)).FirstOrDefault();
var mod = context.Colour.Where(m => (warunek)).FirstOrDefault();
var mod = context.Category.Where(m => (warunek)).FirstOrDefault();
itp....

A każda z klas modelu (Brand, Colour, Category) implementuje interfejs ICommonData.

W warunku jest wyszukiwanie po ID lum Name. I z tym by nie było problemu przy implementacji interfejsu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1