/ / Najlepsze praktyki wykonywania operacji CRUD na obiektach (Entity Framework) - c #, asp.net-mvc, podmiot-framework

Najlepsze praktyki do wykonywania operacji CRUD na jednostkach (struktura Entity) - c #, asp.net-mvc, entity-framework

Próbuję wymyślić, gdzie powinienem umieścićoperacja bazy danych dla każdej jednostki. Przed tym zamieszaniem dla każdej jednostki wykonywałem wszystkie operacje na bazie danych w klasie dostawcy. Klasa dostawcy oznacza, że ​​każda klasa ma dostawcę. Jak na przykład:

class Member
{
public string FirstName;
public string LastName;
}

class MemberProvider
{
//Singleton
//Do database operations

......

public List<Member> GetItems(FirstName = null, LastName = null)
{
// run store procedure
//this returns List<Member> if any
}

public Member GetItem(int? Id = null,FirstName = null, LastName = null)
{
// run store procedure
//this return Member if any
}

....
}

wtedy gdy potrzebuję listy członków z pewnym filtrowaniem, robię to:

 List<Member> members = MemberProvider.Instance.GetItems(FirstName = "John", LastName = "Black");

Pytanie brzmi: jak mogę wykonać wszystkie operacje bazy danych związane z jednostką w samej jednostce? Czy to dobra praktyka? Co powinienem przeczytać, aby zrozumieć tę koncepcję?

Z góry dziękuję.

Odpowiedzi:

5 dla odpowiedzi № 1

W większości przypadków obiekty biznesowe i dostęp do danych powinny być oddzielone. Spójrz na wzorzec repozytorium tutaj, i tutaj. Jest to prawdopodobnie dokładnie to, czego potrzebujesz.


4 dla odpowiedzi nr 2

Sugerowałbym użycie wzorca repozytorium. Oto naprawdę dobre posty, aby uzyskać dobre wprowadzenie i przykładowy kod: Używanie wzorców repozytorium i jednostki pracy z Entity Framework 4.0

i kolejny Implementacja repozytorium i jednostki wzorców pracy w aplikacji ASP.NET MVC


3 dla odpowiedzi nr 3

Powinieneś pomyśleć o zastosowaniu zasady „Separacja obaw". Dlatego inna klasa powinna być odpowiedzialna za operacje surowe.

Możesz rozważyć przyjrzenie się wzorowi repozytorium. Patrik Löwendahl napisał łatwy do przeczytania samouczek na początek.


2 dla odpowiedzi № 4

Uważam, że operacje na bazie danych powinny być w osobnej klasie. Spójrz na dyrektora ds. Pojedynczej odpowiedzialności http://www.objectmentor.com/resources/articles/srp.pdf i wzorzec projektu repozytorium http://martinfowler.com/eaaCatalog/repository.html.