【问题标题】:How to tell EntityFramework not to mess with given entity?如何告诉 EntityFramework 不要弄乱给定的实体?
【发布时间】:2012-11-02 06:27:54
【问题描述】:

我正在寻找一种方法来指示某个类不用于数据库的生成(代码优先的 Web 应用程序),也不用于监视更改。换句话说,我只是希望这个特定的类与任何自动持久性行为完全断开(因为它只会用作 View 和 Controller 之间的 DTO)。可能吗?

【问题讨论】:

  • 为什么要纳入EF模型?只有当让它发生时才会发生。
  • 要将它包含在数据库中,它需要在您的上下文中被 DBSet 引用,或者被 DBset 中引用的东西引用
  • @LukeMcGregor(和 GertArnold)感谢您向我澄清这一点......你是对的,现在我明白了。 Context 类上没有 DbSet 的属性,不受 EF 控制。 :) 谢谢!
  • @LukeMcGregor,您可以将其发布为答案,以便我接受并关闭此问题吗?

标签: entity-framework poco dto


【解决方案1】:

Entity Framework 使用 DbContext 类来检测数据库的预期结构。

EF 有 2 种方式假设实体存在于您的数据库中。

  1. 实体由您的 DbContext 直接引用,例如您有一个 DbSet<TEntity>(或 IDbSet<TEntity>
  2. 该实体是从您的 DbContext 间接引用的,例如,您有一个如上所述引用的实体,该实体将您的实体作为属性。

当一个实体被引用时,它会期望具有该实体架构的表将存在于数据库中。您可以通过使用属性装饰实体或使用模型构建器来尝试实际预期模式的外观(名称、忽略的属性、必需/不需要等)。我个人的偏好是使用模型构建器,请查看我的文章here 以获取使用模型构建器进行导航属性的示例。

【讨论】:

  • @MarceloMyara 没问题 :)
猜你喜欢
  • 2012-10-11
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 2023-01-18
  • 2013-12-28
相关资源
最近更新 更多