{"id":268762,"date":"2015-11-23T12:28:03","date_gmt":"2015-11-23T09:28:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=268762"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=268762","title":{"rendered":"\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 Windows \u0438 Web CRUD-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0431\u0438\u0437\u043d\u0435\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441 XAF + Entity Framework. \u0427\u0430\u0441\u0442\u044c 1"},"content":{"rendered":"<br \/>\n<h2><font color=\"#888\">\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/font><br \/>  <\/h2>\n<p>  \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u0435\u043d\u044c\u043a\u043e\u0435 \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 DXLibrary \u0434\u043b\u044f \u0443\u0447\u0435\u0442\u0430 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043f\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0432 \u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0437\u0430 \u043f\u0430\u0440\u0443 \u0447\u0430\u0441\u043e\u0432 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0430 DevExpress eXpressApp Framework (XAF). \u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 Microsoft SQL Server \u0431\u0430\u0437\u0435, \u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0438\u043c\u0438 \u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 DevExpress eXpress Persistent Objects ORM (XPO). \u0422\u0430\u043a \u043a\u0430\u043a <a href=\"https:\/\/habrastorage.org\/files\/3f2\/972\/5e4\/3f29725e44fa4970b18b1daff639695e.png\">\u0441\u0438\u0435 \u0447\u0443\u0434\u043e<\/a> \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0441\u043d\u043e\u0441\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u0442 \u0441\u0432\u043e\u0438 \u043d\u0435\u0437\u0430\u0443\u0440\u044f\u0434\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0436\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u0434 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0438. \u041f\u043e\u043c\u0438\u043c\u043e \u0444\u0435\u0439\u0441\u043b\u0438\u0444\u0442\u0438\u043d\u0433\u0430 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u043c\u0435\u043d\u0438\u0442\u044c XPO \u043d\u0430 Microsoft ADO.NET Entity Framework (EF) \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c.<img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/0ba\/ba7\/343\/0baba73431db4415acf43ec7d0573963.png\" alt=\"image\" align=\"right\" width=\"200\"\/> \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043c\u043e\u0442\u0438\u0432\u043e\u043c \u0442\u0443\u0442 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e EF \u0447\u0435\u043c-\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0438\u043b\u0438 \u0445\u0443\u0436\u0435 (\u043e\u0431\u0435 ORM \u0434\u0430\u0432\u043d\u043e \u0434\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0437\u0430\u0434\u0430\u0447), \u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043f\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 XAF \u0438 EF, \u0445\u043e\u0442\u044f \u043e\u043d\u0438 \u0443\u0436\u0435 \u00ab\u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u0433\u043e\u0434 \u0437\u0430\u043c\u0443\u0436\u0435\u043c\u00bb. \u0415\u0441\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0431\u0435\u043b + \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u00ab\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0440\u044f\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043e\u0434\u043d\u043e \u0437\u0430\u043f\u0438\u043b\u0438\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 <a href=\"https:\/\/www.devexpress.com\/Subscriptions\/New2015-1.xml?product=xaf\">15.1 XAF<\/a> \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0439 \u0432\u0435\u0431 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043b\u044f touch-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443, \u0447\u0442\u043e \u0433\u0440\u0435\u0445\u0430 \u0442\u0430\u0438\u0442\u044c:-)<\/p>\n<p>  \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0438 \u0432\u0432\u043e\u0434\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e\u0441\u0442\u043e\u0432, \u0433\u0434\u0435 \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e \u0448\u0430\u0433\u0430\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u043a \u0432\u0435\u0431, \u0442\u0430\u043a \u0438 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u044b\u0445 line-of-business (LOB) \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0431\u0430\u0437\u0435 \u043b\u0438\u0431\u043e \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 Entity Framework, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u0431\u0430\u0437\u0435 \u043c\u0438\u043a\u0441\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 ASP.NET WebForms\/HTML5 \u0438 WinForms, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 DevExpress, \u0441\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u043f\u043e\u0434 \u0447\u0443\u0442\u043a\u0438\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u043c XAF \u2014 \u043d\u0430\u0448\u0435\u0433\u043e UI \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 (\u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0430 <a href=\"http:\/\/habrahabr.ru\/search\/?q=%5Bxaf%5D&amp;target_type=posts\">\u0425\u0430\u0431\u0440\u0435<\/a>, <a href=\"http:\/\/www.devexpress.com\/xaf\">\u0441\u0430\u0439\u0442\u0435<\/a>), \u0430 \u043f\u043e \u0441\u0443\u0442\u0438 \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u0437\u0430 \u043f\u043e\u0447\u0442\u0438 10 \u043b\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 best patterns &#038; practices \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Office-like \u0431\u0438\u0437\u043d\u0435\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f .NET \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<h2><font color=\"#888\">\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f<\/font><br \/>  <\/h2>\n<p>  1. .NET Framework 4+ \u0438 Visual Studio 2010+ (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0435 \u0438 Community Edition \u0432\u0435\u0440\u0441\u0438\u0438, \u043a\u0440\u043e\u043c\u0435 express) \u2013 \u0434\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Visual Studio 2013.<br \/>  2. Entity Framework 6 Tools (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0442\u0443\u0434\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u043b\u0438\u0431\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/msdn.microsoft.com\/en-us\/data\/ee712906\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438<\/a>)<br \/>  3. \u041f\u043e\u043b\u043d\u044f \u0432\u0435\u0440\u0441\u0438\u044f DevExpress XAF v15.1 (\u0430 \u043b\u0443\u0447\u0448\u0435 <a href=\"https:\/\/www.devexpress.com\/Subscriptions\/New-2015.xml?product=xaf\">15.2<\/a>, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0435\u0442\u0435), \u043b\u0438\u0431\u043e 30-\u0434\u043d\u0435\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043d\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043a\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 <a href=\"https:\/\/go.devexpress.com\/devexpressdownload_universaltrial.aspx\">\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0431\u0435\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u0421\u041c\u0421<\/a>\ud83d\ude42 \u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0437\u0430 \u043f\u0430\u0440\u0443 \u043c\u0438\u043d\u0443\u0442 \u043d\u0430 SSD.<br \/>  4. Microsoft SQL Server \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (\u043f\u043e\u0434\u043e\u0439\u0434\u0443\u0442 \u043b\u044e\u0431\u044b\u0435 \u043f\u043e\u043b\u043d\u044b\u0435\/express\/localdb \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 2000) \u043b\u0438\u0431\u043e <a href=\"https:\/\/msdn.microsoft.com\/library\/dd363565.aspx\">\u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0411\u0414, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 EF<\/a>.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043d\u0430\u0447\u0430\u0442\u044c, \u043c\u043e\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u0435\u043c\u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0432\u044b\u0431\u043e\u0440\u0430 ORM<\/b><\/p>\n<div class=\"spoiler_text\">\u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e XAF \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f code generator, \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0448\u0438 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b DevExpress <a href=\"https:\/\/documentation.devexpress.com\/#WPF\/CustomDocument15112\">MVVM Framework<\/a> &#038; <a href=\"https:\/\/documentation.devexpress.com\/#WPF\/CustomDocument17425\">Scaffolding Wizard<\/a> \u0434\u043b\u044f WPF\/WinForms. \u041d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, XAF \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c application framework, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e \u043d\u0435\u043a\u0438\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0422\u0430\u043a \u0432\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0443\u043a\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0444\u043e\u0440\u043c \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0435\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0438\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430) \u0438\u043b\u0438 \u0442\u0435\u0440\u044f\u0442\u044c \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0445 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 \u2014 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 XAF \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043a\u0430\u0444\u0444\u043e\u043b\u0434\u0438\u043d\u0433\u0430 UI \u0438 \u0411\u0414 \u043f\u043e \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043d\u0430\u0431\u043e\u0440\u0443 \u043f\u0440\u0430\u0432\u0438\u043b. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 XAF \u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 CRUD \u0444\u043e\u0440\u043c, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0431\u044b \u0438\u043c\u0435\u043b \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0441\u0442\u0443\u0434\u0438\u0438, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0425\u043e\u0442\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a XAF \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c\u0438 \u043a\u0438\u0440\u043f\u0438\u0447\u0438\u043a\u0430\u043c UI \u0442\u0438\u043f\u0430 System.Windows.Forms.Control \u0438\u043b\u0438 HTML \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432 \u043b\u044e\u0431\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u043c .NET \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 XAF \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0447\u0430\u0441\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u0442\u0438\u043f\u0430 View, Property Editor, Controller \u0438 \u0434\u0440. \u041f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u043d\u0438\u0437\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0435\u0441\u0442\u044c, \u0432\u0430\u0441 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442, \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u0438\u043a\u0441\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044b, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0435, \u0430 \u0438\u043d\u0430\u0447\u0435 \u043a\u0430\u043a\u043e\u0439 \u0442\u0443\u0442 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439? \u0414\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441\u0430\u043c\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a XAF, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u043d\u0430\u0447\u0430\u043b\u0443 \u043b\u044e\u0434\u044f\u043c \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0438\u0442\u044c\u0441\u044f \u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0430\u043c\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u041e\u0442\u0441\u044e\u0434\u0430 \u0438 \u043a\u0440\u0443\u0442\u0430\u044f \u043a\u0440\u0438\u0432\u0430\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 \u044d\u0442\u0430\u043f\u0430\u0445.<\/p>\n<p>  \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0442\u0430\u043a\u0436\u0435 \u0441\u0440\u0430\u0437\u0443 \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0437\u0432\u0435\u044f\u0442\u044c \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u044f \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 UI \u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043d\u0443\u0436\u0434\u044b \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430 \u0432 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430 RAD \u0442\u0443\u043b\u0437\u0430\u0445, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u043d\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e-\u0433\u043d\u0435\u0437\u0434\u043e\u0432\u044b\u043c \u0435\u0434\u0438\u043d\u044b\u043c! \u0427\u0442\u043e\u0431\u044b \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c UI \u0442\u0438\u043f\u043e\u0432\u044b\u0445 \u0431\u0438\u0437\u043d\u0435\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 <a href=\"https:\/\/www.devexpress.com\/Products\/NET\/Application_Framework\/gallery.xml\">\u0442\u0443\u0442<\/a>, \u043f\u043e\u0442\u044b\u043a\u0430\u0442\u044c \u0432\u0436\u0438\u0432\u0443\u044e \u0434\u0435\u043c\u043a\u0438 <a href=\"https:\/\/www.devexpress.com\/Products\/NET\/Application_Framework\/demos.xml\">\u043e\u043d\u043b\u0430\u0439\u043d<\/a> (\u0438\u043b\u0438 \u043b\u0443\u0447\u0448\u0435 \u0438\u0437 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0438 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0435 \u0434\u0435\u043c\u043a\u0438 \u043e\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0437\u0430\u043e\u0434\u043d\u043e) \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043e\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 <a href=\"https:\/\/www.devexpress.com\/Home\/Case-Studies\/ExelixisSoftware\/\">\u043f\u0440\u0438\u043c\u0435\u0440<\/a> \u0438\u043b\u0438 \u0432\u043e\u0442 \u043f\u0430\u0440\u043e\u0447\u043a\u0430 \u043e\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u0439 \u043c\u043d\u043e\u0433\u0438\u043c \u0432 \u0421\u041d\u0413 \u0413\u0430\u043b\u0430\u043a\u0442\u0438\u043a\u0438 \u0441 \u0438\u0445 AMM, CnP, EAM \u0438 \u0434\u0440. \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 (<a href=\"http:\/\/www.galaktika.ru\/amm\/upravlenie-pozakaznym-proizvodstvom.html\">\u0440\u0430\u0437<\/a>, <a href=\"http:\/\/www.galaktika.ru\/amm\/upravlenie-serijnym-proizvodstvom.html\">\u0434\u0432\u0430<\/a>). \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435, \u043a\u0441\u0442\u0430\u0442\u0438, \u0432\u044b\u0448\u043b\u0438 \u0438\u0437 \u00ab\u0433\u0430\u043b\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e\u00bb \u0442\u044e\u043d\u0438\u043d\u0433-\u0430\u0442\u0435\u043b\u044c\u0435:-) <a href=\"http:\/\/xafari.ru\/\">XAFARI<\/a> \u2014 \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u0442 \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 XAF. \u041f\u043e\u043c\u0438\u043c\u043e \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0445 third-party \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"http:\/\/www.expandframework.com\">http:\/\/www.expandframework.com<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 5 \u043b\u0435\u0442 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u043b\u0430\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u0422\u0443\u0442 \u0436\u0435 \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 DevExpress \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u043f\u043e\u043b\u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043a\u0430\u043a \u0438 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0435, \u0442\u0430\u043a \u0438 \u043d\u0430 touch-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c \u044d\u043a\u0440\u0430\u043d\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430\u0445, \u043f\u0440\u0438 \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 (\u043f\u0440\u0438\u0447\u0435\u043c \u0434\u0430\u0436\u0435 \u0432 \u0441\u0442\u0430\u0440\u043e\u043c-\u0434\u043e\u0431\u0440\u043e\u043c <a href=\"https:\/\/documentation.devexpress.com\/#WindowsForms\/DevExpressXtraEditorsWindowsFormsSettings_TouchUIModetopic\">WinForms<\/a>!), \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0449\u0435 \u043d\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0431\u0430\u0433\u0430\u0436\u0430 \u0437\u043d\u0430\u043d\u0438\u0439 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e ORM, \u0442\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 XAF, \u0432\u0430\u0441 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043c\u0443\u0447\u0438\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u0441 XPO \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0439 ORM \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 (\u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u0437 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0445 \u043e\u0431\u0437\u043e\u0440\u043e\u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430: <a href=\"http:\/\/geektimes.ru\/post\/74009\/\">\u0440\u0430\u0437<\/a>, <a href=\"https:\/\/uriahas.wordpress.com\/2013\/08\/01\/%d0%b2%d0%b2%d0%b5%d0%b4%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b2-xpo-%d0%b8-orm\/\">\u0434\u0432\u0430<\/a>), \u043a\u043e\u0442\u043e\u0440\u0430\u044f c 2006 \u0433\u043e\u0434\u0430 \u0431\u044b\u043b\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0434\u043b\u044f XAF, \u0441 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0432\u0438\u0434\u0435\u043e, \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/ms178359(v=vs.110).aspx\">\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f<\/a> \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0434\u043b\u044f .NET \u0441 \u0431\u041e\u043b\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0442\u0440\u0443\u0434\u0430, \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u043e\u0442 Microsoft, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 <a href=\"https:\/\/msdn.microsoft.com\/ru-ru\/library\/dd363565.aspx\">\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0431\u0430\u0437\u043e\u0439 \u0437\u043d\u0430\u043d\u0438\u0439 \u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0441\u0438\u043b\u0430\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u043d\u0430 <a href=\"http:\/\/stackoverflow.com\/questions\/tagged\/entity-framework\">StackOverFlow<\/a>, <a href=\"https:\/\/social.msdn.microsoft.com\/Forums\/en-US\/home?category=dataplatformdev\">Social.MSDN<\/a>, <a href=\"http:\/\/forums.asp.net\/1227.aspx\/1?ADO%20NET%20Entity%20Framework%20LINQ%20to%20SQL%20NHibernate\">forums.asp.net<\/a> (\u043f\u0440\u0430\u0432\u0434\u0430, \u0431\u0435\u0437 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u043b\u0438\u0431\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u0432\u043e\u043e\u0431\u0449\u0435). \u041c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438 \u043e\u043f\u0440\u043e\u0441\u044b \u0441\u0440\u0435\u0434\u0438 \u0441\u0432\u043e\u0438\u0445 \u043d\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u0440\u0430\u0432\u043d\u044b\u0445 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 (\u0437\u0434\u0435\u0441\u044c \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u0432\u0438\u0434\u0443 \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e \u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u043b\u0443\u0447\u0448\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c), \u0430 \u043d\u0435 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u0433\u0434\u0435-\u0442\u043e \u0442\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0431\u0440\u0430\u0442\u044c \u0432\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e EF \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f XAF \u043f\u043e\u0437\u0436\u0435 XPO \u2014 \u0441 2012 \u0433\u043e\u0434\u0430, \u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u0432\u0443\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0430\u043c\u043e\u0433\u043e XAF \u0438 \u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0441\u0440\u0430\u0432\u043d\u0438\u043c\u0430 \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0443 \u0438 \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u043c. \u0412 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u043e\u043b\u044f \u043d\u0430\u0448\u0438\u0445 EF \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0440\u0430\u0441\u0442\u0435\u0442, \u043d\u043e \u0432\u0441\u0435 \u0435\u0449\u0435 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e \u0443\u0441\u0442\u0443\u043f\u0430\u0435\u0442 XPO. \u0414\u0443\u043c\u0430\u0435\u0442\u0441\u044f, \u0440\u0435\u043b\u0438\u0437 EF7 \u0438 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u044e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0435\u0449\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435. \u0411\u043e\u043b\u044c\u0448\u0435 \u043c\u044b\u0441\u043b\u0435\u0439 \u0438 \u043e\u0442\u0437\u044b\u0432\u043e\u0432 \u043d\u0430\u0448\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u0434\u0430\u043d\u043d\u0443\u044e \u0442\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u043c\u043e\u0435\u043c <a href=\"http:\/\/dennisgaravsky.blogspot.com\/2014\/12\/looking-for-practical-experiences-with.html\">\u0431\u043b\u043e\u0433\u0435 \u043f\u043e \u0442\u0435\u043c\u0435<\/a>.  <\/div>\n<\/div>\n<p>  <b><\/p>\n<h2><font color=\"#888\">\u0428\u0430\u0433\u0438 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043d\u043e\u0432\u043e\u0433\u043e XAF \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441 Entity Framework 6<\/font><br \/>  <\/h2>\n<p>  <\/b>0. \u0421\u043a\u0430\u0447\u0430\u0435\u043c \u043f\u0440\u043e\u0431\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e <a href=\"https:\/\/go.devexpress.com\/devexpressdownload_universaltrial.aspx\">\u0441 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430<\/a>, \u0434\u043e\u0436\u0434\u0435\u043c\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c Visual Studio;<\/p>\n<p>  1. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c <b>DXLibraryV2<\/b> \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u043d\u043e\u0435 <b>FILE | New | Project\u2026<\/b>, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u0438 \u0432\u044b\u0431\u0440\u0430\u0432 <b>XAF Solution Wizard<\/b> (\u043b\u0438\u0431\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 DEVEXPRESS | All Platforms | New Project\u2026 <a href=\"https:\/\/habrastorage.org\/files\/283\/bdd\/402\/283bdd402ab44a45a589b73ac50cd87d.png\">\u043c\u0435\u043d\u044e \u0441\u0442\u0443\u0434\u0438\u0438<\/a>)  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">(\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c&#8230;)<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/417\/97e\/cca\/41797ecca63849b89af60664e4ae08ca.png\" width=\"800\"\/>  <\/div>\n<\/div>\n<p>  2. \u0412 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 <b>Windows <\/b>\u0438 <b>Web <\/b>\u0438 \u043d\u0430\u0436\u043c\u0435\u043c <b>Next<\/b>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">(\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c&#8230;)<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/daf\/d00\/19c\/dafd0019c7e342eeba5e1be3c65caf72.png\" width=\"800\"\/>  <\/div>\n<\/div>\n<p>  3. \u0412\u044b\u0431\u0435\u0440\u0435\u043c <b>Entity Framework Code First<\/b> \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u043d\u0430\u0436\u043c\u0435\u043c <b>Next<\/b><\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">(\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c&#8230;)<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/869\/cbe\/d8f\/869cbed8f7cf4bc8af69d5079ff05359.png\" width=\"800\"\/>  <\/div>\n<\/div>\n<p>  4. \u0412\u044b\u0431\u0435\u0440\u0435\u043c <b>Authentication = Active Directory<\/b>, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0432\u0445\u043e\u0434 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 Windows \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438 \u043d\u0430\u0436\u043c\u0435\u043c Next<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">(\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c&#8230;)<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/96c\/b1f\/3ef\/96cb1f3ef7f04d33a98fcf6663a6a766.png\" width=\"800\"\/>  <\/div>\n<\/div>\n<p>  5. \u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043d\u0430 <b>Finish<\/b>, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u043a\u0430 \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">(\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c&#8230;)<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/5c9\/d35\/e7e\/5c9d35e7eb3a40a4912dd52f38a97314.png\" width=\"800\"\/>  <\/div>\n<\/div>\n<h2><font color=\"#888\">\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e XAF \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/font><br \/>  <\/h2>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u0438\u0437\u0430\u0440\u0434 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/5bc\/a54\/653\/5bca54653cec470ba7012477c0e9e7d4.png\" width=\"800\"\/><\/p>\n<p>  \u0412 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445, \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c:   <\/p>\n<ul>\n<li>DXLibraryV2.Module \u2014 \u043e\u0434\u0438\u043d \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0448\u0430\u0440\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u0430, \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u0435\u0442\u0430\u043c\u043e\u0434\u0435\u043b\u0438 UI, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0430\u0437\u043e\u0439 \u0438 \u0432 \u0440\u0435\u0434\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0435 UI \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b)<\/li>\n<li>DXLibraryV2.Module.Wxx \u2014 \u043f\u0430\u0440\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435, \u0433\u0434\u0435 \u043c\u043e\u0433\u0443\u0442 \u0436\u0438\u0442\u044c \u043a\u043e\u0434 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/li>\n<li>DXLibraryV2.Wxx \u2014 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0442.\u0435. ASP.NET \u0441\u0430\u0439\u0442 \u0438 WinForms \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0442\u044c\u0441\u044f \u0441 Microsoft SQL Server \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e connectionString \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (Web.config \u0438 App.config).<\/li>\n<\/ul>\n<p>  \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0438 \u0441 \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0438 readme.txt \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u043d\u0435 \u0437\u0430\u0431\u043b\u0443\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u044b\u043c \u0441\u0443\u0440\u043e\u0432\u044b\u043c \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c (<a href=\"https:\/\/documentation.devexpress.com\/eXpressAppFramework\/CustomDocument112569.aspx\">\u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435&#8230;<\/a>).<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c DXLibraryV2.Web \u0438 DXLibraryV2.Win \u0438\u0437 Visual Studio, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 \u0431\u043e\u043b\u0432\u0430\u043d\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0432\u0435\u0431 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (ASP.NET WebForms) \u0438 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0430 (WinForms), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u0430 \u043d\u0438\u0447\u0435\u043c\u0443 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u044b, \u043d\u0443 \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043a\u0440\u043e\u043c\u0435 CRUD \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438, \u0440\u043e\u043b\u044f\u043c\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u2013 \u044d\u0434\u0430\u043a\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0430\u044f \u0430\u0434\u043c\u0438\u043d\u043a\u0430 \u0437\u0430 \u043c\u0438\u043d\u0443\u0442\u0443:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/dd5\/b46\/be9\/dd5b46be9f4d4afe9e37796a05316974.png\" width=\"600\"\/><br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/279\/35d\/a20\/27935da2062944449144e57c5193b532.png\" width=\"600\"\/><\/p>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043a\u0430\u043a\u0438\u0435 \u0435\u0441\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0433\u0434\u0435 \u0442\u0443\u0442 \u0441\u043f\u0440\u044f\u0442\u0430\u043b\u0441\u044f Entity Framework \u0438 \u043a\u0430\u043a \u043d\u0430\u043c \u0435\u0433\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u043d\u0443\u0436\u0434\u044b.<\/p>\n<h2><font color=\"#888\">\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 Entity Framework \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438<\/font><br \/>  <\/h2>\n<p>  \u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Entity Framework \u0432 XAF \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 \u0441\u0431\u043e\u0440\u043a\u0430\u0445 <b>DevExpress.ExpressApp.EF.v15.1.dll<\/b> (\u0434\u043b\u044f .NET 4.0) \u0438 <b>DevExpress.ExpressApp.EF.45.v15.1.dll<\/b> (\u0434\u043b\u044f .NET 4.5), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u0432 XAF \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 .NET Framework. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043d\u0430\u0448 \u043c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0442\u043e \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 EF \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e \u0438\u0445 \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u044b <a href=\"http:\/\/msdn.microsoft.com\/en-us\/data\/ee712906\">\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0447\u0435\u0440\u0435\u0437 NuGet<\/a>.<\/p>\n<p>  \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f XAF \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 <b>Entity Framework 6<\/b>, \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044f \u043a\u0430\u043a code-based \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <b>DbContext<\/b> \u0442\u0430\u043a \u0438 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0443\u044e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u043d\u0430 \u0431\u0430\u0437\u0435 <b>ObjectContext<\/b> \u0438 <a href=\"https:\/\/msdn.microsoft.com\/ru-ru\/library\/system.data.objects.dataclasses.entityobject(v=vs.110).aspx\">EntityObject<\/a> (\u0432 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 EF 5). \u041f\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435, \u0441\u0440\u0435\u0434\u0438 \u043d\u0430\u0448\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u043c\u0443, \u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u043b\u0443\u0445\u043e\u0432 \u043e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u043c \u0443\u0431\u0438\u0435\u043d\u0438\u0438 EDMX <a href=\"http:\/\/blogs.msdn.com\/b\/adonet\/archive\/2014\/10\/21\/ef7-what-does-code-first-only-really-mean.aspx\">\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 EF<\/a> \u0434\u0443\u043c\u0430\u044e \u043e\u043d\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u043e\u0439\u0434\u0435\u0442 \u043d\u0430 \u043d\u0435\u0442. \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0431\u0435\u0442 EF 7 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u0432\u0432\u0438\u0434\u0443 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u0445\u043e\u0442\u044f \u0443\u0436\u0435 \u0432\u0435\u0434\u0443\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u0421\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u043e\u0432\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f EF \u0443\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u043d\u0430\u0441 \u0438 \u043d\u0430\u0448\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439.<\/p>\n<p>  \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 <a href=\"http:\/\/msdn.microsoft.com\/en-us\/data\/jj193542\">EF Code First<\/a> \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c <b>POCO \u0431\u0438\u0437\u043d\u0435\u0441-\u043a\u043b\u0430\u0441\u0441\u044b<\/b>, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043d\u0430\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a \u043e\u0442 DbContext, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0431\u0438\u0437\u043d\u0435\u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 <a href=\"https:\/\/msdn.microsoft.com\/ru-ru\/library\/gg696460(v=vs.113).aspx\">DbSet<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u044b \u0438\u0437 \u0431\u0430\u0437\u044b. \u0412\u044b \u0435\u0449\u0435 \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043d\u0430 5\u043c \u0448\u0430\u0433\u0435 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0442\u0438\u043f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 (AuthenticationActiveDirectory), \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0432 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (SecurityModule)? \u0422\u0430\u043a \u0432\u043e\u0442, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u0430\u0441\u0442\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432\u043a\u043b\u044e\u0447\u0438\u043b \u0432 \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430 DbContext (<i>DXLibraryV2.Module\\BusinessObjects\\DXLibraryV2DbContext.cs<\/i>) \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 User, Role (\u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0440. \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0435 \u0437\u0430\u043f\u0447\u0430\u0441\u0442\u0438), \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 <a href=\"https:\/\/documentation.devexpress.com\/#eXpressAppFramework\/CustomDocument112571\">DevExpress.Persistent.BaseImpl.EF.v15.1<\/a>, \u0438\u0434\u0443\u0449\u0435\u0439 \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 XAF \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f \u0442\u0438\u043f\u043e\u0432\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d46\/1b3\/fb6\/d461b3fb6fb54bc69773e5d74e1ad4ca.png\" width=\"950\"\/><\/p>\n<p>  \u0412\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 POCO \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043b\u043e\u0433\u0438\u043a\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/b98\/e2c\/9a6\/b98e2c9a63ed442eb8aa71aff11cb3fc.png\" width=\"950\"\/><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0442\u0438\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e DbContext \u043b\u0438\u0431\u043e ObjectContext (\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 EDMX \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438) \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0437\u044f\u0442\u043e\u0439 \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 <b>EFObjectSpaceProvider<\/b> \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0432 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430\u0445 WebApplication (<i>DXLibraryV2.Web\\WebApplication.cs<\/i>) \u0438\u043b\u0438 WinApplication (<i>DXLibraryV2.Win\\WinApplication.cs<\/i>). <\/p>\n<pre><code class=\"cs\">public partial class DXLibraryV2WindowsFormsApplication : WinApplication {     public DXLibraryV2WindowsFormsApplication() {         InitializeComponent();     }     protected override void CreateDefaultObjectSpaceProvider(CreateCustomObjectSpaceProviderEventArgs args) {         args.ObjectSpaceProvider = new EFObjectSpaceProvider(             typeof(DXLibraryV2DbContext),             TypesInfo, null,              args.ConnectionString         );     } <\/code><\/pre>\n<p>  WxxApplication \u043a\u043b\u0430\u0441\u0441\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0438\u043c\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b. \u0418\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0432\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u043e\u0447\u043a\u0430\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 Session_Start \u0438\u0437 DXLibraryV2.Web\\Global.asax.cs \u0438\u043b\u0438 \u043c\u0435\u0442\u043e\u0434\u0435 Main \u0438\u0437 DXLibraryV2.Win\\Program.cs. \u0421\u0440\u0435\u0434\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043c\u0438\u043c\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u043a\u0430\u043a \u0438\u0437 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0442\u0430\u043a \u0438 \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0438\u043f\u0430 DXLibraryV2Module (<i>DXLibraryV2.Module\\Module.cs<\/i>). XAF \u043c\u043e\u0434\u0443\u043b\u0438 (\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0438 \u043e\u0442 <a href=\"https:\/\/documentation.devexpress.com\/#eXpressAppFramework\/clsDevExpressExpressAppModuleBasetopic\">ModuleBase<\/a>) \u043a\u0430\u043a \u0438 \u0441\u0430\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0438 <a href=\"https:\/\/documentation.devexpress.com\/eXpressAppFramework\/clsDevExpressExpressAppXafApplicationtopic.aspx\">XafApplication<\/a>) \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u043c\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043e\u0442 <a href=\"https:\/\/msdn.microsoft.com\/ru-ru\/library\/system.componentmodel.component(v=vs.110).aspx\">System.ComponentModel.Component<\/a>, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u044b.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c52\/3d0\/102\/c523d0102de0453f91b85ca28410d263.png\" width=\"950\"\/><\/p>\n<p>  \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0431\u044b\u043b \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 UpdateDatabaseAfterUpdateSchema \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430 <a href=\"https:\/\/documentation.devexpress.com\/#eXpressAppFramework\/clsDevExpressExpressAppUpdatingModuleUpdatertopic\">ModuleUpdater<\/a> (<i>DXLibraryV2.Module\\DatabaseUpdate\\Updater.cs<\/i>) \u2014 \u0430\u043d\u0430\u043b\u043e\u0433\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 Seed \u0443 EF\u0441\u043a\u0438\u0445 <a href=\"http:\/\/www.codeguru.com\/csharp\/article.php\/c19999\/Understanding-Database-Initializers-in-Entity-Framework-Code-First.htm\">database initializer\u043e\u0432<\/a>.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d85\/e7a\/830\/d85e7a83068b491b8520be1bddf90e1a.png\" width=\"950\"\/><\/p>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 ModuleUpdater-\u043e\u0432 \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 Microsoft SQL Server \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/92f\/e43\/a9d\/92fe43a9d362498a924efbc48baca605.png\" width=\"600\"\/><\/p>\n<p>  EFObjectSpaceProvider \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0432\u044b\u0431\u043e\u0440\u0430 code-based \u0438\u043b\u0438 EDMX \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 ObjectContext API, \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u043c\u0441\u044f \u0434\u043b\u044f \u043d\u0438\u0445 \u043e\u0431\u0449\u0438\u043c \u0437\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u0435\u043c, \u0432\u0435\u0434\u044c \u0432\u043d\u0443\u0442\u0440\u0438 DbContext \u0432 EF 6 \u043f\u043e\u043a\u0430 \u0435\u0449\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 ObjectContext, \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043a <a href=\"https:\/\/msdn.microsoft.com\/ru-ru\/library\/system.data.entity.infrastructure.iobjectcontextadapter(v=vs.113).aspx\">IObjectContextAdapter<\/a>. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e MetadataWorkspace \u0434\u043b\u044f \u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u0438\u043f\u0430\u0445 \u0438 \u0438\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0441\u043a\u0435\u043b\u0435\u0442\u0430 CRUD \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.<\/p>\n<p>  \u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043a\u043e\u0434\u0430 \u0432 ModuleUpdater \u0432\u044b\u0448\u0435, \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 XAF CRUD \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 DbContext\/ObjectContext, \u0430 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u0443 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c <a href=\"https:\/\/documentation.devexpress.com\/#eXpressAppFramework\/CustomDocument113707\">IObjectSpace<\/a> \u0438\u043b\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f Entity Framework \u2014 <b>EFObjectSpace<\/b>. \u041e\u043d \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u043c EFObjectSpaceProvider \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0443 \u0441\u0435\u0431\u044f \u0432\u043d\u0443\u0442\u0440\u0438 <a href=\"https:\/\/msdn.microsoft.com\/ru-ru\/library\/system.data.objects.objectstatemanager(v=vs.110).aspx\">ObjectStateManager<\/a> \u0438 <a href=\"https:\/\/msdn.microsoft.com\/ru-ru\/library\/system.data.objects.objectquery(v=vs.110).aspx\">CreateQuery<\/a> API, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435. IObjectSpace \u043f\u043e \u0441\u0443\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f ORM-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u0432\u043e\u043f\u043b\u043e\u0449\u0435\u043d\u0438\u0435\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 Repository \u0438 Unit Of Work, \u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0435\u0440\u0442\u043a\u043e\u0439 \u043d\u0430\u0434 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445. \u0420\u0430\u0431\u043e\u0442\u0430\u044f \u0447\u0435\u0440\u0435\u0437 IObjectSpace API, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437 \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u0443, \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0435 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e ORM \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u0411\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c IObjectSpace \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c XAF \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u0445 \u0438\u043b\u0438 \u00ab\u0441\u043b\u0443\u0448\u0430\u0435\u0442\u00bb \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0441\u0435\u0431\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<h2><font color=\"#888\">\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435<\/font><br \/>  <\/h2>\n<p>  <b>1.<\/b> \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0411\u0414 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u043f\u0440\u0430\u0432\u043e\u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0443\u0434\u043e\u0431\u043d\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c <a href=\"https:\/\/msdn.microsoft.com\/data\/jj591621.aspx\">Code First Migrations \u0444\u0438\u0447\u0443 \u0415F<\/a>, \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044f \u043d\u0443\u0436\u043d\u044b\u0439 <a href=\"http:\/\/www.codeguru.com\/csharp\/article.php\/c19999\/Understanding-Database-Initializers-in-Entity-Framework-Code-First.htm\">database initializer<\/a> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e API \u0438\u0437 System.Data.Entity, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0442 \u0442\u0430\u043a (DXLibraryV2.Module\\Module.cs):  <\/p>\n<pre><code class=\"cs\">\/\/ Uncomment this code to delete and recreate the database each time the data model has changed. \/\/ Do not use this code in a production environment to avoid data loss. \/\/ #if DEBUG \/\/ Database.SetInitializer(new DropCreateDatabaseIfModelChanges&lt;DXLibraryV2DbContext&gt;()); \/\/ #endif <\/code><\/pre>\n<p>  <b>2.<\/b> \u0421\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b User,Role \u0438\u0437 DevExpress.Persistent.BaseImpl.EF.v15.1\u2013 \u044d\u0442\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u00ab\u0432\u0437\u043b\u0435\u0442\u0430\u00bb. XAF \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u043c \u0438, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u2014 \u044d\u0442\u043e \u0433\u0438\u0431\u043a\u0438\u0439 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u044b\u0439 *\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a* \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u0430\u043f\u0447\u0430\u0441\u0442\u0438 \u043d\u0430 \u0441\u0432\u043e\u0438 \u043b\u0438\u0431\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u00ab\u0441 \u043d\u0443\u043b\u044f\u00bb, \u0435\u0441\u043b\u0438 \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u0448\u044c \u0447\u0442\u043e \u0434\u0430 \u043a\u0430\u043a. \u0422\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0447\u0430\u0441\u0442\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e EF \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u0432 \u043d\u0430\u0448 DbContext.<\/p>\n<p>  <b>3.<\/b> \u0414\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 INotifyPropertyChanged \u0432 \u0432\u0430\u0448\u0438\u0445 \u0431\u0438\u0437\u043d\u0435\u0441 \u043a\u043b\u0430\u0441\u0441\u0430\u0445 (\u0445\u043e\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0445\u043e\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442 <a href=\"https:\/\/github.com\/Fody\/PropertyChanged\">\u0442\u0438\u043f\u0430 \u044d\u0442\u043e\u0439<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043d\u0436\u0435\u043a\u0442\u044f\u0442 \u043d\u0443\u0436\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438). \u041d\u0430 \u0445\u0443\u0434\u043e\u0439 \u043a\u043e\u043d\u0435\u0446 \u043c\u043e\u0436\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u0441\u043f\u0435\u0446. \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <a href=\"https:\/\/documentation.devexpress.com\/#eXpressAppFramework\/clsDevExpressExpressAppIObjectSpaceLinktopic\">IObjectSpaceLink<\/a> \u0438 \u0440\u0443\u043a\u0430\u043c\u0438 \u0437\u0432\u0430\u0442\u044c ObjectSpace.SetModified(this), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u043a\u0438\u043d\u0443\u0442\u044c \u043d\u043e\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0432 \u043d\u0443\u0436\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445.<\/p>\n<p>  <b>4.<\/b> \u0418\u0437 \u043e\u043f\u044b\u0442\u0430, \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 (\u0438 \u0445\u043e\u0442\u044f\u0442) \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u0440\u044f\u043c\u043e \u0432 \u0441\u0430\u043c\u0438\u0445 EF \u043a\u043b\u0430\u0441\u0441\u0430\u0445 \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041d\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0430\u0432\u0435 \u0438\u043c \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0442\u044c (\u0445\u043e\u0442\u044f \u043d\u0430 \u0442\u0435\u043c\u0443 \u0430\u043d\u0435\u043c\u0438\u0447\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 vs \u0431\u043e\u0433\u0430\u0442\u043e\u0439 <a href=\"http:\/\/stackoverflow.com\/search?q=anemic+domain+model\">\u043d\u0430 \u0421\u0442\u0435\u043a\u0435 \u043a\u0443\u0447\u0430 \u0445\u043e\u043b\u0438\u0432\u0430\u0440\u043e\u0432<\/a>, \u043f\u043e\u043c\u043d\u044e \u0434\u0430\u0436\u0435 \u0441\u0430\u043c \u0432\u0431\u0440\u043e\u0441\u0438\u043b \u0441\u0432\u043e\u0438 \u043f\u044f\u0442\u044c \u043a\u043e\u043f\u0435\u0435\u043a <a href=\"http:\/\/stackoverflow.com\/questions\/4834918\/objectcontext-aware-entity-in-ef-to-avoid-anemic-domain-model\/28178827#28178827\">\u0442\u0443\u0442<\/a>) \u0438 \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u043e\u043c\u0438\u043c\u043e \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0433\u043e IObjectSpaceLink \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u043e\u0431\u0435\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <a href=\"https:\/\/documentation.devexpress.com\/#eXpressAppFramework\/clsDevExpressExpressAppIXafEntityObjecttopic\">IXafEntityObject<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043b\u043e\u0433\u0438\u043a\u0438 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 (OnCreated), \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 (OnLoaded) \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 (OnSaving).<\/p>\n<p>  <b>5.<\/b> \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0433\u043e\u0442\u043e\u0432\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 EF \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043e\u0442 ASP.NET MVC \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443 \u043d\u0430\u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 Data Annotations \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0432\u043b\u0438\u044f\u044e\u0449\u0438\u0445 \u043d\u0430 \u0432\u0438\u0434 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 DisplayFormat, UIHint. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432\u0441\u043a\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0432\u043b\u0438\u044f\u044e\u0449\u0438\u0435 \u043d\u0430 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0433\u043e EF \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u0430\u043a \u0438 \u0434\u043e\u043b\u0436\u043d\u044b. \u041a\u0430\u043a \u0431\u044b \u0442\u0430\u043c \u043d\u0438 \u0431\u044b\u043b\u043e, \u0432 XAF \u0435\u0441\u0442\u044c <a href=\"https:\/\/documentation.devexpress.com\/#eXpressAppFramework\/CustomDocument112701\">\u043a\u0443\u0447\u0430 \u0441\u0432\u043e\u0438\u0445 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432<\/a> \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0432\u043a\u0443\u0441 \u0438 \u0446\u0432\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 UI \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u0432 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445. \u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0435\u0434 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043e\u0431\u0449\u0435\u043c \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Application Model (<a href=\"http:\/\/habrahabr.ru\/company\/devexpress\/blog\/153755\/\">\u0432\u043e\u0442 \u0442\u0443\u0442<\/a> \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0435\u0435).<\/p>\n<h2><font color=\"#888\">\u0412 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/font><br \/>  <\/h2>\n<p>  \u042d\u0442\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0432\u0441\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Entity Framework \u0432 XAF, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435. \u0423\u0433\u043b\u0443\u0431\u0438\u0442\u044c \u0441\u0432\u043e\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0448\u0435\u0439 \u043e\u043d\u043b\u0430\u0439\u043d \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0442\u0443\u0442: <a href=\"https:\/\/documentation.devexpress.com\/eXpressAppFramework\/CustomDocument112670.aspx\">eXpressApp Framework<\/a> &gt; <a href=\"https:\/\/documentation.devexpress.com\/eXpressAppFramework\/CustomDocument112683.aspx\">Concepts<\/a> &gt; <a href=\"https:\/\/documentation.devexpress.com\/eXpressAppFramework\/CustomDocument113461.aspx\">Business Model Design<\/a> &gt; <a href=\"https:\/\/documentation.devexpress.com\/eXpressAppFramework\/CustomDocument113462.aspx\">Business Model Design with Entity Framework<\/a> \u0438 <a href=\"https:\/\/documentation.devexpress.com\/#eXpressAppFramework\/CustomDocument113496\">eXpressApp Framework &gt; Getting Started &gt; Basic Tutorial<\/a> (\u0442\u0443\u0442 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u0430\u0445 \u0432 \u043e\u0431\u0449\u0435\u043c). \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u0435\u043c\u043a\u0438 XCRM, EFDemoCodeFirst, EFDemoModelFirst, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 <i>%Public%\\Documents\\DevExpress Demos 15.1\\Components\\eXpressApp Framework\\<\/i> \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u043f\u043e\u0447\u0442\u0438 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430. \u041a\u0443\u0447\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 <a href=\"https:\/\/search.devexpress.com\/?q=entity%20framework&amp;m=Documentation\">\u0432 \u0431\u0430\u0437\u0435 \u0437\u043d\u0430\u043d\u0438\u0439 \u0442\u0435\u0445\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438<\/a> \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043b\u0438\u0448\u043d\u0438\u043c\u0438 \u043a \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044e.<\/p>\n<p>  \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 EF \u043f\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f-\u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430.<\/p>\n<p>  C \u0443\u0432\u0430\u0436\u0435\u043d\u0438\u0435\u043c,<br \/>  \u0414\u0435\u043d\u0438\u0441<\/p>\n<h2><font color=\"#888\">P.S.<\/font><br \/>  <\/h2>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u0441 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0438 \u043d\u0430\u0448\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0438 \u043f\u043e\u0441\u043b\u0435 \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0432\u0430\u043c \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0445 \u043f\u0440\u0438o\u0431\u0440e\u0441\u0442\u0438, \u0442\u043e \u0434\u043e 20 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2015 \u0433\u043e\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434e\u0441\u044f\u0442\u0438 \u043fpo\u0446e\u043d\u0442\u043d\u044b\u043c \u043ay\u043f\u043e\u043do\u043c \u043d\u0430 \u043fo\u043ay\u043f\u043a\u0443 \u0432 \u0440y\u0431\u043b\u044f\u0445 (~$220 \u0438\u043b\u0438 ~14\u0442\u044bc \u0440y\u0431\u043be\u0439 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u043a\u0443\u0440\u0441\u0443) \u043d\u043e\u0432\u043e\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 DevExpress Universal, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0439 \u0432 \u0441\u0435\u0431\u044f <a href=\"https:\/\/www.devexpress.com\/Subscriptions\/\">XAF \u0438 \u043a\u0443\u0447\u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/a> \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u0434 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 <a href=\"http:\/\/store.softline.ru\/developer-express-inc\/universal-subscription\/\">\u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043ca\u0433a\u0437\u0438\u043d Softline.ru<\/a> \u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f \u0437a\u043aa\u0437\u0430   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0432\u0432e\u0441\u0442\u0438 \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u043ao\u0434<\/b><\/p>\n<div class=\"spoiler_text\">Universal_XafEf  <\/div>\n<\/div>\n<p>  \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u0440ece\u043b\u043b\u0435\u0440\u0443 \u0437\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u043e\u0431 \u044d\u0442\u043e\u0439 a\u043a\u0446\u0438\u0438 \u043d\u0430 \u0431\u043b\u0430\u0433\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u0421\u041d\u0413 \u0432 \u0442\u0430\u043a\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0432\u0434\u0440\u0443\u0433 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043ay\u043f\u0438\u0442\u044c \u0432 \u0432a\u043b\u044e\u0442\u0435 <a href=\"https:\/\/www.devexpress.com\/Subscriptions\/buy.xml\">\u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430<\/a>, \u0442\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0439 c\u043a\u0438\u0434\u043a\u0438, \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 <a href=\"mailto:dennis@devexpress.com\">\u043c\u043d\u0435 \u043d\u0430 \u043f\u043e\u0447\u0442\u0443<\/a> \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442. \u0422\u0443\u0434\u0430 \u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e XAF, \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445.               <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/271331\/\"> http:\/\/habrahabr.ru\/post\/271331\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<br \/>\n<h2><font color=\"#888\">\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/font><br \/>  <\/h2>\n<p>  \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u0435\u043d\u044c\u043a\u043e\u0435 \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 DXLibrary \u0434\u043b\u044f \u0443\u0447\u0435\u0442\u0430 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043f\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0432 \u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0437\u0430 \u043f\u0430\u0440\u0443 \u0447\u0430\u0441\u043e\u0432 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0430 DevExpress eXpressApp Framework (XAF). \u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 Microsoft SQL Server \u0431\u0430\u0437\u0435, \u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0438\u043c\u0438 \u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 DevExpress eXpress Persistent Objects ORM (XPO). \u0422\u0430\u043a \u043a\u0430\u043a <a href=\"https:\/\/habrastorage.org\/files\/3f2\/972\/5e4\/3f29725e44fa4970b18b1daff639695e.png\">\u0441\u0438\u0435 \u0447\u0443\u0434\u043e<\/a> \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0441\u043d\u043e\u0441\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u0442 \u0441\u0432\u043e\u0438 \u043d\u0435\u0437\u0430\u0443\u0440\u044f\u0434\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0436\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u0434 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0438. \u041f\u043e\u043c\u0438\u043c\u043e \u0444\u0435\u0439\u0441\u043b\u0438\u0444\u0442\u0438\u043d\u0433\u0430 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u043c\u0435\u043d\u0438\u0442\u044c XPO \u043d\u0430 Microsoft ADO.NET Entity Framework (EF) \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c.<img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/0ba\/ba7\/343\/0baba73431db4415acf43ec7d0573963.png\" alt=\"image\" align=\"right\" width=\"200\"\/> \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043c\u043e\u0442\u0438\u0432\u043e\u043c \u0442\u0443\u0442 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e EF \u0447\u0435\u043c-\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0438\u043b\u0438 \u0445\u0443\u0436\u0435 (\u043e\u0431\u0435 ORM \u0434\u0430\u0432\u043d\u043e \u0434\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0437\u0430\u0434\u0430\u0447), \u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043f\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 XAF \u0438 EF, \u0445\u043e\u0442\u044f \u043e\u043d\u0438 \u0443\u0436\u0435 \u00ab\u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u0433\u043e\u0434 \u0437\u0430\u043c\u0443\u0436\u0435\u043c\u00bb. \u0415\u0441\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0431\u0435\u043b + \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u00ab\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0440\u044f\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043e\u0434\u043d\u043e \u0437\u0430\u043f\u0438\u043b\u0438\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 <a href=\"https:\/\/www.devexpress.com\/Subscriptions\/New2015-1.xml?product=xaf\">15.1 XAF<\/a> \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0439 \u0432\u0435\u0431 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043b\u044f touch-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443, \u0447\u0442\u043e \u0433\u0440\u0435\u0445\u0430 \u0442\u0430\u0438\u0442\u044c:-)<\/p>\n<p>  \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0438 \u0432\u0432\u043e\u0434\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e\u0441\u0442\u043e\u0432, \u0433\u0434\u0435 \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e \u0448\u0430\u0433\u0430\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u043a \u0432\u0435\u0431, \u0442\u0430\u043a \u0438 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u044b\u0445 line-of-business (LOB) \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0431\u0430\u0437\u0435 \u043b\u0438\u0431\u043e \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 Entity Framework, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u0431\u0430\u0437\u0435 \u043c\u0438\u043a\u0441\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 ASP.NET WebForms\/HTML5 \u0438 WinForms, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 DevExpress, \u0441\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u043f\u043e\u0434 \u0447\u0443\u0442\u043a\u0438\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u043c XAF \u2014 \u043d\u0430\u0448\u0435\u0433\u043e UI \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 (\u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0430 <a href=\"http:\/\/habrahabr.ru\/search\/?q=%5Bxaf%5D&amp;target_type=posts\">\u0425\u0430\u0431\u0440\u0435<\/a>, <a href=\"http:\/\/www.devexpress.com\/xaf\">\u0441\u0430\u0439\u0442\u0435<\/a>), \u0430 \u043f\u043e \u0441\u0443\u0442\u0438 \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u0437\u0430 \u043f\u043e\u0447\u0442\u0438 10 \u043b\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 best patterns &#038; practices \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Office-like \u0431\u0438\u0437\u043d\u0435\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f .NET \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-268762","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/268762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=268762"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/268762\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=268762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=268762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=268762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}