c# - 大型项目的 Entity Framework

标签 c# entity-framework

<分区>

我和我的团队将开始一个新项目,我们正处于探索和测试一些新(或不太新)技术的阶段。

直到今天,我们一直在使用带有 DBDataReader 的经典 ADO、用于延迟加载的代理,在某些情况下还使用 DataTable。

该团队由 3 名开发人员和一名数据库设计师组成。 我们的项目每个至少包含 130 个表。

我们的新项目有发展潜力,因此我们预计肯定会有 100 张 table 。

过去 2 天我一直在阅读 EF5 并对其进行一些简单测试,但我仍然无法决定是否应该使用它。

  1. 我们通常将一个大项目拆分成许多“模块”项目,以便我们在源代码控制下更快更好地工作。我们要为整个数据库使用一个大的“edmx”吗?
  2. 由于我们有一个数据库设计器,我怀疑 CodeFirst 不是一个选项。那么将 EF 与数据库优先方法一起使用是否值得?
  3. 如果我们使用数据库优先方法,EF 是否足够智能以正确检测所有关系并准备好使用而无需我进行更多额外配置? (通过额外的配置,我的意思是我将不得不编写 DataAnnotations 或必须 ovveride DbContext)
  4. 就我个人而言,我发现自己对使用 sql 设计数据库非常有信心。我唯一的烦恼是,当我的类列表中的实体发生更改时,我必须更新所有选择、删除、更新、插入脚本。 EF 会帮我解决这个问题,但除此之外,我开始相信它会降低性能并最终降低我的生产速度,因为我们不熟悉它..

您认为它值得吗?

*除了 DataAnnotations 和 DbContext ovveride,是否有人使用普通 T4 模板来创建表(模式)?

最佳答案

  1. 我绝对建议创建多个模型。您可以为每个选择要映射的表、 View 和存储过程。
  2. 数据库优先绝对没问题。
  3. 如果设置了数据库约束,EF 将识别它们。您无法绕过微小的修改,但总的来说,EF 做得很好。
  4. 使用 EF 会对查询性能产生轻微影响。但在大多数情况下,这不会成为问题。在少数情况下,您可能会遇到 Not Acceptable 性能损失,您可以通过在必要时将自己的 SQL 注入(inject) EF 来进行优化。

我认为,您很快就会熟悉 EF 的用法,因此我认为不熟悉不会成为长期的问题。

关于c# - 大型项目的 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16698721/

相关文章:

c# - EF6 Code First 使用数据注释填充 SQL 表和列的描述

c# - 如何让 MVC3 调用具有不同名称的 View ?

C# 如何从 linq2sql 查询返回到 main

linq - IQueryable 到 IQueryable<T>

entity-framework - ASP.net 身份、IoC 和共享 DbContext

c# - Entity Framework 5 删除问题 - 对象状态管理器问题

c# Selenium 2.53 在 firefox 升级到 47 后移动到木偶驱动程序

c# - 打开文件://URI to specific# (hash) ID

c# - 如何将数据传递到 `OnActivateAsync()` 以初始化我的有状态 actor?

entity-framework - 如何使用 Azure 存储和 Entity Framework 上传文件