一定要用Entity Framework嗎?

答案

是不一定,即不一定要用EF;

如果你是一個接觸編程的時候,就是通過ef進行Database數據持久化的人來說,你就用ef,因爲你對ef的一切都是感覺很自然的;

而你是從ado,ado.net一路走過來的人,真的不一定要用EF;而且EF還是建立在ADO.net之上的框架,爲什麼我們要捨本逐末呢?

 

EF是什麼?有什麼用?爲什麼要用EF?

Entity Framework Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations. EF Core works with many databasees, including SQL Database (on-premises and Azure), SQLite, MySQL, PostgreSQL, and Azure Cosmos DB.(https://docs.microsoft.com/en-us/ef/


下面來自於:https://www.tutorialspoint.com/entity_framework/entity_framework_overview.htm

What is Entity Framework?

Entity Framework was first released in 2008, Microsoft's primary means of interacting between .NET applications and relational databases. Entity Framework is an Object Relational Mapper (ORM) which is a type of tool that simplifies mapping between objects in your software to the tables and columns of a relational database.

  • Entity Framework (EF) is an open source ORM framework for ADO.NET which is a part of .NET Framework.

  • An ORM takes care of creating database connections and executing commands, as well as taking query results and automatically materializing those results as your application objects.

  • An ORM also helps to keep track of changes to those objects, and when instructed, it will also persist those changes back to the database for you.

Why Entity Framework?

Entity Framework is an ORM and ORMs are aimed to increase the developer’s productivity by reducing the redundant task of persisting the data used in the applications.

  • Entity Framework can generate the necessary database commands for reading or writing data in the database and execute them for you.

  • If you're querying, you can express your queries against your domain objects using LINQ to entities.

  • Entity Framework will execute the relevant query in the database and then materialize results into instances of your domain objects for you to work within your app.

There are other ORMs in the marketplace such as NHibernate and LLBLGen Pro. Most ORMs typically map domain types directly to the database schema.

Typical ORM

Entity Framework has a more granular mapping layer so you can customize mappings, for example, by mapping the single entity to multiple database tables or even multiple entities to a single table.

EF Runtime Metadata

  • Entity Framework is Microsoft's recommended data access technology for new applications.

  • ADO.NET seems to refer directly to the technology for data sets and data tables.

  • Entity Framework is where all of the forward moving investment is being made, which has been the case for a number of years already.

  • Microsoft recommends that you use Entity Framework over ADO.NET or LINQ to SQL for all new development.

Conceptual Model

For developers who are used to database focused development, the biggest shift with Entity Framework is that it lets you focus on your business domain. What it is that you want your application to do without being limited by what the database is able to do?

  • With Entity Framework, the focal point is referred to as a conceptual model. It's a model of the objects in your application, not a model of the database you use to persist your application data.

  • Your conceptual model may happen to align with your database schema or it may be quite different.

  • You can use a Visual Designer to define your conceptual model, which can then generate the classes you will ultimately use in your application.

  • You can just define your classes and use a feature of Entity Framework called Code First. And then Entity Framework will comprehend the conceptual model.

Conceptual Model

Either way, Entity Framework works out how to move from your conceptual model to your database. So, you can query against your conceptual model objects and work directly with them.

Features

Following are the basic features of Entity Framework. This list is created based on the most notable features and also from frequently asked questions about Entity Framework.

  • Entity Framework is a Microsoft tool.
  • Entity Framework is being developed as an Open Source product.
  • Entity Framework is no longer tied or dependent to the .NET release cycle.
  • Works with any relational database with valid Entity Framework provider.
  • SQL command generation from LINQ to Entities.
  • Entity Framework will create parameterized queries.
  • Tracks changes to in-memory objects.
  • Allows to insert, update and delete command generation.
  • Works with a visual model or with your own classes.
  • Entity Framework has stored Procedure Support.

下面來自:https://www.got-it.ai/solutions/sqlquerychat/sql-help/general-sql/clarifying-the-confusion-between-ado-net-entity-framework-and-linq-querychat/

Entity Framework (or ADO.NET Entity Framework)

Entity Framework is the Microsoft version of Object-Relational Mapper (ORM). It’s important to note that Entity Framework is built on ADO.NET classes. Entity Framework is also called ADO.NET Entity Framework.

As developers work with strongly typed .NET objects called entities, there was a big gap between the object models used in the Object-Oriented Programming (OOP) and the data storage, which is in a relational model. Much code was needed to deal with this gap. ORM was created to resolve this issue. It is a technique for converting data stored in a relational database to domain-specific classes. 

Entity Framework offers many benefits compared to previous technology. One of its advantages is the excellent tooling support where we can build and maintain data access in a much shorter time. We can focus on solving business problems without worrying about the underlying data storage. 


下面來自:https://www.cnblogs.com/weixb/p/9640089.html

爲什麼要使用Entity Framework

本文介紹從DDD(Domain-Driven Design[領域驅動設計])的角度來說說爲什麼要使用Entity Framework(以下都會簡稱爲EF),同時也看出類似Drapper之類的簡陋ORM不足的地方。


使用EF我們要注意的是什麼?

下面來自:https://www.iamtimcorey.com/blog/137806/entity-framework

  1. Does your team understand how to use Entity Framework well?
  2. Does your team know how to diagnose issues with Entity Framework code?
  3. Does your team know how to diagnose under-performing EF queries and fix them?
  4. Does your team understand the code that EF wrote for you well enough to know what it is doing?
  5. Does your team know how to protect the EF credentials on client machines?

也有反饋使用了EF,後面又回退回ADO.net的,如下面的文章:

https://cerkit.com/2018/10/28/why-we-decided-to-stop-using-entity-framework-and-go-back-to-ado-net/

After a few weeks of analysis, we decided that going backwards in time to a somewhat less civilized time would be the answer. We decided to stop using Entity Framework and use "raw" ADO.NET to access stored procedures mapped to DTOs. We weren't comfortable having our queries compiled into the language as LINQ expressions. Keeping them in the database as stored procedures would keep our options free for the future when C# and .NET are no longer the coolness.


真的一定要用EF嗎?

如果只是爲了ORM(object- relational mapping),我們真的需要EF嗎?使用Dapper不行嗎?也許Dapper不是一個很徹底的ORM,但是這個不重要,我們想要的只是想讓數據庫中數據和應用程序中對象能夠快速進行轉換就好了,其他像什麼keep trace等,要他做什麼?保存,持久化的邏輯,我都是自己做的,爲什麼要用它?所以這樣看來,可能我使用auto mapper都能完成我的要求,真的不一定要用ef,如此龐大,如此複雜,出現問題不知道那裏出了問題,不是自己找麻煩嗎。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章