POCO означает «Простой старый объект C #» или «Простой старый объект CLR», в зависимости от того, кого вы спрашиваете. Если фреймворк или API заявляют, что он работает с POCO, это означает, что он позволяет вам определять вашу объектную модель идиоматически , не заставляя ваши объекты наследовать от определенных базовых классов. Вообще говоря, фреймворки, которые работают на POCO, предоставляют вам большую свободу и контроль над дизайном и реализацией ваших классов, потому что у них меньше требований для правильной работы.
Постоянное невежество означает, что, насколько это возможно, все в вашем коде, работающем на уровне бизнес-логики или выше, ничего не знает о реальном дизайне базы данных, о том, какой движок базы данных вы используете, или как или когда объекты извлекаются. из или сохранились в базе данных. В случае MEF постоянное невежество достигается путем работы с POCO и использования LINQ для выполнения запросов (т. Е. Не требуется, чтобы пользователь создавал какие-либо запросы SQL для извлечения нужных объектов).
Это открытый вопрос, но по общему мнению, в большинстве случаев доменные объекты (или бизнес-объекты - так или иначе, упомянутые выше POCO) должны не знать о логике персистентности. То есть вместо вызова MyBusinessObject.Save()
у вас есть менеджер IO или класс адаптера, и вы звоните Manager.Save(MyBusinessObject)
. Таким образом, вы избегаете разоблачения семантики персистентности в своих бизнес-объектах - таким образом вы получаете лучшее разделение проблем.