Co jsou třídy POCO v Entity Framework?


Nejlepší odpověď

POCO jsou prosté staré CLR (Common Language Runtime) objekty. Je to v podstatě entita v doméně. V rámci entity to obvykle pomáhá v modelu prvního kódu, nikoli v prvním modelu databáze. Tato třída nezdědí funkčnost žádného konkrétního rámce nebo technologie. Je to jednoduchá veřejná třída a obsahuje pouze vlastnosti a metody. Tyto metody neimplementují trvalou logiku, jako je ukládání a načítání dat z databáze. Tyto třídy se také nazývají jako Persistence Ignorant třídy. V zásadě funguje jako vrstva pro komunikaci s řádky a sloupci databázové tabulky.

Příklad třídy Poco

public class Group

{

public int ID {get; soubor; }

public string GroupName {get; soubor; }

public ApplicationUser Member {get; soubor; }

veřejný řetězec GroupDescription {get; soubor; }

public ICollection ChatRooms {get; soubor; }

}

POCO se chová lépe než DTO [Design]

DTO “ Jediným účelem je přenést stav a neměl by se chovat. Příklad použití tohoto vzoru viz vysvětlení DTO Martina Fowlera.

Zatímco POCO se řídí pravidly OOP. Mělo by (ale nemusí) mít stavové a chování. POCO pochází z POJO, vytvořil Martin Fowler [ anekdota zde ]. Termín POJO použil k tomu, aby bylo více sexy odmítnout implementace EJB v rámci rámce. POCO by měl být používán ve stejném kontextu in.Net. Nenechte rámce diktovat vaše design objektu.

Chcete-li se dozvědět více o .NET a Entity framework, podívejte se na můj youtube kanál

Dot Net

Odpověď

POCO (prosté staré objekty CLR) jsou jednoduše entity vaší domény. Normálně, když používáme framework entit, jsou entity generovány automaticky pro vás. To je skvělé, ale bohužel tyto entity jsou proložené funkcemi pro přístup k databázi, což je zjevně v rozporu s SOC (oddělení zájmů). POCO jsou jednoduché entity bez jakékoli funkce pro přístup k datům, ale přesto poskytuje funkcím všechny EntityObject funkční ities like

  • Lazy loading
  • Change tracking

This is a good start for this

Rámec entit POCO

POCO můžete také snadno vygenerovat ze stávajícího projektu rámce entit pomocí generátorů kódu.

Generátor kódu EF 5.X DbContext

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *