что такое Entity Framework с POCO
в чем преимущество использования POCO? Я не понимаю значения упорства невежество, что это значит? Что объект poco не может выставлять такие вещи, как Save? Я не могу обмотать голову вокруг этого POCO, вокруг которого много шума.
в чем разница с генерируемыми EF сущностями и POCO?
4 ответов
POCO означает " простой старый объект C#" или "простой старый объект CLR", в зависимости от того, кого вы спрашиваете. Если фреймворк или API утверждает, что он работает на POCO, это означает, что он позволяет определить вашу объектную модель идиоматически без необходимости наследовать объекты от определенных базовых классов. Вообще говоря, рамки, которые работают на POCO, позволяют вам большую свободу и контроль над дизайном и реализацией ваших классов, потому что у них меньше требований к работе правильно.
упорство невежество означает, что, насколько это возможно, что-либо в вашем коде, работающем на уровне бизнес-логики или выше, ничего не знает о фактическом дизайне базы данных, о том, какой компонент database engine вы используете, или как и когда объекты извлекаются из базы данных или сохраняются в ней. В случае MEF сохранение незнания достигается путем работы над POCO и использования LINQ для выполнения запросов (т. е. не требуя от пользователя создания каких-либо SQL-запросов для извлечения желаемый объект.)
это открытый вопрос, но все согласны с тем, что в большинстве случаев объекты домена (или бизнес - объекты-в любом случае, упомянутые выше POCO) должны быть не осведомлены о логике персистентности. То есть, вместо того, чтобы звонить MyBusinessObject.Save()
, У вас есть менеджер ввода-вывода или класс адаптера, и вы вызываете Manager.Save(MyBusinessObject)
. Таким образом, вы избегаете подвергать семантике настойчивости свои бизнес - объекты-вы получаете лучшее разделение проблем таким образом.
POCO = простые старые объекты CLR.
простые старые объекты CLR (т. е. C# или VB) означают, что я могу говорить на C# или VB все время, пока пишу свою программу, и не нужно беспокоиться об эзотерическом языке базы данных, таком как
UPDATE MYTABLE SET MYFIELD1 = @MYPARAMETER1, MYFIELD2 = @MYPARAMETER2 BLAH BLAH
EF Generated entities == POCO подключен (косвенно) к базе данных.
класс POCO-это класс, который не зависит от какого-либо базового класса. Он похож на любой другой обычный класс .net, поэтому он называется " простые старые объекты CLR" Эти сущности POCO (также известные как объекты с сохраняемостью) поддерживают большинство тех же запросов LINQ, что и производные сущности EntityObject.
POCO = простые старые объекты CLR
преимущества POCO:
технология агностицизма-это блаженство: эта концепция обычно вращается вокруг PI (упорство невежество), но это не только это. Упорство невежество означает, что ваши сущности должны быть очищены от любых ограничений кода, связанных с сохранением, которые фреймворк - обычно ORM - заставляет вас. Это, например, если у вас есть сопоставление уровней атрибутов, где эти атрибуты не являются частью вашего домена но есть ли только потому, что некоторые рамки хотят, чтобы они были там, тогда ваш домен не является невежественным. Сидар сказал Здесь