应该/我可以将实体框架用于非标准CRUD吗?

时间:2012-06-18 08:46:48

标签: c# entity-framework database-design crud

我正在编写一个应用程序,其数据库具有略微不寻常的架构。至少我觉得这很不寻常,我很少做数据库的东西。

我所有的书都告诉我,我应该使用Entity Framework(或其他一些ORM)进行数据库访问,但是他们提供的示例总是标准的CRUD。每个实体一个表,每个对象一行,活动记录等。

我的模式使用不相交的子类型,因此每个实体有多个表,并且具有修订历史记录,因此编辑实际上创建了一个新行,但只在一个表中(取决于编辑的字段)

EF是否适应这种自定义行为,还是面向传统模式?我的理解是我创建了一个模式或域对象,并自动生成数据库操作代码。我可以覆盖默认行为吗?我怎么能告诉EF关于我的自定义行为?

我非常愿意学习EF,如果它能让我的生活更轻松,但我不想付出太多努力来学习一个框架,我最终会努力让它做什么我想要。如果是这种情况,我宁愿滚动自己的存储库并自己处理SQL。

1 个答案:

答案 0 :(得分:3)

这个问题过于抽象,无法得到明确回答。 EF提供了一些高级映射方案,其中更多表可以映射到单个实体,但它定义了严格的规则来实现这一点。或者,您可以映射数据库视图或自定义SQL查询,将表中的数据组合在一起以形成实体。

更复杂的是您的第二个要求 - 它通常需要编写您自己的SQL /存储过程并将其映射到对表执行的EFs CUD操作。此SQL代码将包含部分更新规则,因为EF更新整个实体不仅会影响记录。如果使用映射视图或查询,则必须将这些CUD操作映射到自定义SQL或存储过程,否则您的实体将是只读的。

结论:可以实现你想要的东西,但它并不简单,它需要EF的高级知识,你仍然会写一些SQL。

相关问题