{"id":666,"date":"2008-12-10T15:19:00","date_gmt":"2008-12-10T15:19:00","guid":{"rendered":"\/blogs\/bobb\/post\/What-the-Entity-Framework-has-going-for-it.aspx"},"modified":"2013-01-03T23:59:47","modified_gmt":"2013-01-04T07:59:47","slug":"what-the-entity-framework-has-going-for-it","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/","title":{"rendered":"What the Entity Framework has going for it"},"content":{"rendered":"<p>\nI&#39;ve been following the ADO.NET Entity Framework since its inception. Never did buy the idea about it being &quot;more than an ORM&quot;, thought it was just marketing hype. After all, if it looks like an ORM and smells like an ORM, then&#8230; But, the more I&#39;ve been wallowing around in it and thinking about its position in the world in general, the more I&#39;d thought about what could drive someone to the &quot;more than an ORM&quot; conclusion. Here&#39;s three things that come to mind.\n<\/p>\n<p>\n1. It&#39;s built on the ADO.NET provider model. This is actually interesting for two reasons. First, anyone with an ADO.NET data provider can plug in without having to change all the tools. More importantly, it provides the EF an entry to any tool that consumes ADO.NET data providers. Imagine being able to&nbsp; do reporting against your object model with SSRS or Crystal Reports. Or use your CDS (conceptual data store) as an integration source.&nbsp; Or integration with Office. Granted that currently these utilities don&#39;t know anything about IExtendedDataRecord currently, but Microsoft&#39;s Report Builder let&#39;s you build a user-friendly object model for reporting&#8230;why not use a model that already looks like your business objects?\n<\/p>\n<p>\n2. Lack of IExtendedDataRecord support brings us to point two. The ESQL language extensions. You can use ESQL to provide a query over the data source, flattening the hierarchies out when needed. And that&#39;s just what most tools need, a connection string and a query string. That produces rowsets (even flat rowsets)&nbsp;to be consumed by tools that don&#39;t care a bit&nbsp;about object models. Without waiting for all these tools to add support for an object-oriented&nbsp;conceptual data source.\n<\/p>\n<p>\n3. Finally, I came across this one. The writer was writing about PowerShell (specifically, why PowerShell in SQL Server&nbsp;when there already is T-SQL), but <a href=\"http:\/\/blogs.msdn.com\/b\/dtjones\/archive\/2008\/08\/29\/powershell-vs-t-sql-or-why-did-we-add-powershell-support-in-sql2k8.aspx\" class=\"broken_link\">here&#39;s an interesting quote<\/a>:\n<\/p>\n<p>\nWithin Microsoft we have a concept called <a href=\"http:\/\/www.microsoft.com\/windowsserversystem\/cer\/allcriteria.mspx\" class=\"broken_link\">Common Engineering Criteria<\/a> (CEC). The goal of CEC is to establish consistency across IT products (Windows Server, Exchange, SQL Server, BizTalk, System Center, etc). [some text deleted] &#8230;One of the latest CEC requirements is support for PowerShell. [more text deleted] &#8230;Transact-SQL is a good scripting language but it&rsquo;s not model driven. We will continue to invest in and evolve T-SQL. But we&rsquo;ll also continue to invest in and evolve the models over DDL and DML. The model over DDL is SMO. <strong>The model over DML is EDM<\/strong>. (emphasis mine)\n<\/p>\n<p>\nWhile this doesn&#39;t say (or even imply) that EDM is part of the Common Engineering Criteria, the idea of it a &quot;model-driven DML&quot; is intruiging.\n<\/p>\n<p>\nSo perhaps &quot;more than an ORM&quot; isn&#39;t just marketing hype. We&#39;ll just have to see.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#39;ve been following the ADO.NET Entity Framework since its inception. Never did buy the idea about it being &quot;more than an ORM&quot;, thought it was just marketing hype. After all, if it looks like an ORM and smells like an ORM, then&#8230; But, the more I&#39;ve been wallowing around in it and thinking about its [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-666","post","type-post","status-publish","format-standard","hentry","category-data-access"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What the Entity Framework has going for it - Bob Beauchemin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What the Entity Framework has going for it - Bob Beauchemin\" \/>\n<meta property=\"og:description\" content=\"I&#039;ve been following the ADO.NET Entity Framework since its inception. Never did buy the idea about it being &quot;more than an ORM&quot;, thought it was just marketing hype. After all, if it looks like an ORM and smells like an ORM, then&#8230; But, the more I&#039;ve been wallowing around in it and thinking about its [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/\" \/>\n<meta property=\"og:site_name\" content=\"Bob Beauchemin\" \/>\n<meta property=\"article:published_time\" content=\"2008-12-10T15:19:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-01-04T07:59:47+00:00\" \/>\n<meta name=\"author\" content=\"Bob Beauchemin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bob Beauchemin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/\",\"name\":\"What the Entity Framework has going for it - Bob Beauchemin\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website\"},\"datePublished\":\"2008-12-10T15:19:00+00:00\",\"dateModified\":\"2013-01-04T07:59:47+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Access\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/category\/data-access\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"What the Entity Framework has going for it\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/\",\"name\":\"Bob Beauchemin\",\"description\":\"SQL Server Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e\",\"name\":\"Bob Beauchemin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g\",\"caption\":\"Bob Beauchemin\"},\"sameAs\":[\"http:\/www.sqlskills.com\/blogs\/bobb\/\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/author\/bobb\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What the Entity Framework has going for it - Bob Beauchemin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/","og_locale":"en_US","og_type":"article","og_title":"What the Entity Framework has going for it - Bob Beauchemin","og_description":"I&#39;ve been following the ADO.NET Entity Framework since its inception. Never did buy the idea about it being &quot;more than an ORM&quot;, thought it was just marketing hype. After all, if it looks like an ORM and smells like an ORM, then&#8230; But, the more I&#39;ve been wallowing around in it and thinking about its [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/","og_site_name":"Bob Beauchemin","article_published_time":"2008-12-10T15:19:00+00:00","article_modified_time":"2013-01-04T07:59:47+00:00","author":"Bob Beauchemin","twitter_misc":{"Written by":"Bob Beauchemin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/","url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/","name":"What the Entity Framework has going for it - Bob Beauchemin","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website"},"datePublished":"2008-12-10T15:19:00+00:00","dateModified":"2013-01-04T07:59:47+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/what-the-entity-framework-has-going-for-it\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/bobb\/"},{"@type":"ListItem","position":2,"name":"Data Access","item":"https:\/\/www.sqlskills.com\/blogs\/bobb\/category\/data-access\/"},{"@type":"ListItem","position":3,"name":"What the Entity Framework has going for it"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/","name":"Bob Beauchemin","description":"SQL Server Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/bobb\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e","name":"Bob Beauchemin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g","caption":"Bob Beauchemin"},"sameAs":["http:\/www.sqlskills.com\/blogs\/bobb\/"],"url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/author\/bobb\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts\/666","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/comments?post=666"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts\/666\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/media?parent=666"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/categories?post=666"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/tags?post=666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}