【问题标题】:Advice required - using entity framework with normalised data需要建议 - 使用具有规范化数据的实体框架
【发布时间】:2023-03-25 18:37:01
【问题描述】:

我最近经历了改造我的数据库的过程,规范了很多实体。显然,我现在的桌子比以前多了几张。我在网站上使用的很多数据都是只读的,因此使用视图可以很容易地对其进行非规范化,但是有些实体可以从非规范化检索中受益,但仍需要更新。

这是一个例子。

A User may be a Member
A Member may have a Profile
A Member may have an Account 

此外,我还有 3 个查找表。

总共有 3 个用户表和 4 个成员表。

理想情况下,我可以从上面的表中创建 2 个视图。

但是,用户需要更新,属于会员的实体也是如此。此外,还有 6 个单独的表与用户/成员相关联,即 FavouriteCategories 也需要不时检索和更新。

我正在努力想出最好、最有效的方法。

我不能简单地使用视图并将所有实体和查找带入模型,但我将依赖 EF 来生成检索查询。我读过的资料表明 EF 并不擅长处理连接数据。

我可以同时添加视图和表格,仅将表格用于更新。由于模型的重复、复杂性以及对 EF 模型功能的利用不足,这似乎很草率。

也许我可以使用只读视图进行数据检索并创建存储过程。我相信将 EF 与存储过程一起使用的过程有点麻烦,所以我可能会保持存储过程与 EF 不同,并简单地传递参数并通过传统方法调用 SP。这似乎又有点像中途旅行了。

我对 .net 或 EF 没有那么丰富的经验,因此对于我上面提到的方法或任何更好的技术来实现这一点,我将不胜感激。我不想在这个阶段破解 edmx 文件,因为......好吧,这是错误的。

我有一些实体可以从正确的解决方案中受益。用户示例是最简单的示例之一,因此从正确的方法中可以获得很多好处。

非常感谢您的帮助和建议。

【问题讨论】:

    标签: entity-framework-4.1


    【解决方案1】:

    您想使用 EF 吗?如果是,则使用第一种方法,根本不使用视图并允许 EF 处理所有内容,或者使用最后一种方法,使用视图和映射存储过程进行插入、更新和删除操作。

    也可以将用于读取的映射视图和用于修改的映射表结合起来,但它主要是第一个解决方案(允许 EF 处理所有内容)以及用于某些查询优化的附加视图。

    您不会找到更清洁的方法。提到的方法是您问题的有效解决方案。唯一的问题是您是想自己编写 SQL(查看和存储过程)还是让 EF 来编写。

    最糟糕的方法是使用 EF 进行查询和手动调用存储过程进行更新,但在某些情况下它也很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 2012-03-28
      • 2019-04-02
      • 2011-05-25
      • 2012-01-28
      • 2017-08-21
      相关资源
      最近更新 更多