关于模型对象及其方法的实体框架说明

时间:2016-06-22 17:52:31

标签: c# .net asp.net-mvc entity-framework orm

我有一个关于EF的概念性问题。

我对ORM的概念很新,所以我想对某些事情做一些澄清:

  • 我有一个现有的数据库,我想将我从该数据中提取的数据转换为我的应用程序可以作为对象而不仅仅是数据进行交互的对象。

ORM会做到这一点,对吗?

  • 在EF中我可以创建特定于我的对象的方法吗?例如,我可以创建它,以便我的应用程序可以调用类似employee.ViewDetails() employee是一个对象的内容吗? 如果是这样,你可以推荐一个简单的教程吗?

  • EF可在应用程序之间移植吗?意思是,构建EF结构然后将其移植到多个应用程序是否容易? 我可以通过从不同的解决方案中引用它来做到这一点,不是吗?

感谢所有帮助

2 个答案:

答案 0 :(得分:3)

在回答您的问题之前,让我简要介绍一下实体框架

使用Entity Framework编写面向数据的应用程序具有以下优点:

  • 缩短开发时间:框架提供核心数据访问功能,因此开发人员可以专注于应用程序逻辑。

  • 开发人员可以使用更加以应用程序为中心的对象模型,包括具有继承,复杂成员和关系的类型。在.NET Framework 4中,实体框架还支持通过普通旧CLR对象(PO​​CO)实体的持久性无知。

  • 通过支持独立于物理/存储模型的概念模型,应用程序可以从特定数据引擎或存储架构的硬编码依赖项中解脱出来。

  • 对象模型和特定于存储的架构之间的映射可以在不更改应用程序代码的情况下进行更改。
  • 语言集成查询支持(称为LINQ to Entities)提供IntelliSense和编译时语法验证,用于针对概念模型编写查询。

enter image description here

回到第一个问题

实体框架在三种情况下很有用。

1- 首先,如果您已经拥有现有数据库,或者您希望在应用程序的其他部分之前设计数据库。 (这是你目前的情况)

2- 其次,您希望专注于您的域类,然后从您的域类创建数据库

3- 第三,您希望在可视化设计器上设计数据库架构,然后创建数据库和类。

The following figure illustrates the above scenarios.

2)在EF中我可以创建特定于我的对象的方法吗?例如,我可以创建它,以便我的应用程序可以调用employee.ViewDetails()这样的员工是一个对象吗?如果是这样,你可以推荐一个简单的教程吗?

是的当然看看这个:   - https://msdn.microsoft.com/en-us/library/dd456847.aspx   - http://www.asp.net/mvc/overview/older-versions-1/models-data/creating-model-classes-with-the-entity-framework-cs

3)EF可以在应用程序之间移植吗?意思是,构建EF结构然后将其移植到多个应用程序是否容易?我可以通过从不同的解决方案中引用它来做到这一点吗?

您可能需要实现存储库模式 看看这个惊人的教程

希望这有帮助! 祝你最好:)

答案 1 :(得分:0)

Blubberbo,

有多种方法可以使用EF,它们首先是Code First,Model First和Database。 更多信息可以在下面的SO帖子中找到。

Code-first vs Model/Database-first

1)您可以在上下文中使用LINQ to SQL或LINQ Objects与ORM(如EF)进行交互。

2)如果您想要特定于特定类型的方法,那么您可能需要查看为特定类型编写扩展方法。 更多信息在这里 https://msdn.microsoft.com/en-us/library/bb311042.aspx

3)为了使其可移植,您可能希望围绕它构建抽象,例如,您可能希望编写存储库类来分隔使用EF的DB层和调用它的层(a.k.a存储库层)。 更多信息可以在这里找到

http://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

希望有所帮助,

Praveen Raju