深度探索Entity Framework 6:中文学习之旅

4星 · 超过85%的资源 需积分: 34 115 下载量 162 浏览量 更新于2024-07-19 3 收藏 5.81MB PDF 举报
"Entity Framework 6 Recipes-中文翻译整理.pdf" Entity Framework (EF) 是微软提供的一个对象关系映射(ORM)框架,用于.NET 应用程序,它允许开发人员使用面向对象的概念来与数据库交互,而不是直接编写SQL语句。这本书《Entity Framework 6 Recipes》的中文翻译版本,为学习和理解EF提供了实用的指导和示例。 EF 6 是该框架的一个稳定版本,而EF 7 是其后续的更新,旨在更好地适应跨平台和移动开发的需求。尽管EF的更新速度较快,但在中文资源相对较少的情况下,这本书的翻译对于中文用户来说尤为珍贵。作者通过个人的学习经历,鼓励开发者深入研究EF,特别是对领域驱动设计(DDD)感兴趣的开发者,因为EF是实现DDD的强有力工具。 在介绍中提到了几种不同的开发模式,如EDMX文件、CodeFirst、ModelFirst、DatabaseFirst。这些模式代表了创建数据库模型的不同方法: 1. **EDMX文件**:是一个图形化的工具,用于设计和管理数据库模型,它结合了数据库模式和对象模型。 2. **CodeFirst**:开发人员首先编写C#或VB.NET类,然后EF会根据这些类自动创建数据库。这种模式非常适合敏捷开发,因为它允许快速迭代和数据库的动态更新。 3. **ModelFirst**:首先创建模型,然后生成数据库。这允许开发者从概念模型开始,然后自动生成数据库。 4. **DatabaseFirst**:开发人员先创建数据库,然后EF逆向工程生成模型。这种方式适合已经存在数据库的情况,或者需要紧密遵循数据库结构的项目。 书中还涉及到了表拆分、实体拆分、以及TPH、TPC、TPT等多态性策略,这些都是在处理复杂实体关系和优化数据存储时的重要概念: - **表拆分**:将大型表分成多个较小的表,以提高查询性能和管理复杂性。 - **实体拆分**:将一个实体类的属性分散到多个表中,通常是为了满足特定的数据库设计需求。 - **TPH(Table Per Hierarchy)**:所有子类共享同一个表,使用一个额外的字段来区分不同类型的子类。 - **TPC(Table Per Concrete Class)**:每个子类都有自己的表,父类不单独建表。 - **TPT(Table Per Type)**:每个子类都有自己的表,包括父类的属性。 此外,作者强调了使用EF与DDD相结合的优势,以及在学习过程中可能出现的翻译错误,提示读者审慎对待。由于示例代码体积较大,不能直接在博客中提供,读者可以加入特定的QQ群获取。 通过这本书,无论是初学者还是经验丰富的开发者,都能系统地学习和深入了解Entity Framework,从而提高在.NET环境中处理数据库的能力。

Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@18e8e27b] 2023-07-22 09:35:58.167 ERROR 44888 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: com.sc_core.hardware.entity.Bracelet cannot be cast to com.sc_core.hardware.entity.BraceletMessage] with root cause java.lang.ClassCastException: com.sc_core.hardware.entity.Bracelet cannot be cast to com.sc_core.hardware.entity.BraceletMessage at com.sc_core.hardware.service.Impl.BraceletServiceImpl.BraceletOnlineCount(BraceletServiceImpl.java:46) ~[classes/:na] at com.sc_core.hardware.controller.BraceletController.BraceletOnlineCount(BraceletController.java:37) ~[classes/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) ~[tomcat-embed-core-9.0.46.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.46.jar:4.0.FR]

128 浏览量