gpt4 book ai didi

c# - 最佳实践 - 在 EntityFramework 中混合表实体和 View 实体?

转载 作者:太空狗 更新时间:2023-10-29 20:03:27 25 4
gpt4 key购买 nike

我有一个遗留数据库,我想与 Entity Framework 进行交互。

数据库高度规范化,用于存储有关航类的信息。为了更轻松地处理某些数据,已编写了许多 SQL View 来展平数据并将某些多表连接转换为更多逻辑信息。

快速查看后,我发现在 EF 中使用 View 有两个问题。

  1. View 包含很多很多键。一些快速谷歌搜索似乎表明我需要手动编辑 EDMX 文件以删除此信息。

  2. View 与其他表实体没有任何关系。需要手动添加这些关联才能链接 View -> 表。

当 DBA 团队进行更改时,从数据库刷新模型时,这两个问题似乎都是主要痛点。

这只是您在使用 EF 时需要“忍受”的事情,还是有任何建议的模式/实践来处理这些问题。

最佳答案

可以将表实体与 View 实体混合使用,这在很大程度上取决于您的要求。

根据我的经验,这些是您将不得不处理的事情。

当我第一次开始使用 Entity 时,我经常使用 View ,因为有人告诉我需要使用它们。随着我对实体越来越熟悉,我开始更喜欢使用表实体而不是 View 实体;主要是因为我觉得我有更多的控制权。当您呈现只读信息或如您所描述的那样(展平数据、枢轴、连接等)时, View 是可以的;然而,当您的需求发生变化并且您现在必须添加 CRUD 时,您将不得不使用存储过程或更改您的模型以无论如何使用表实体,因此您不妨从一开始就使用表实体。

The Views contains lots and lots of Keys. Some quick googling seems to indicate I will need to manually edit the EDMX file to remove this info.

这对我来说从来都不是真正的问题。您可以在设计器中撤消 View 实体的键。如果您正在谈论为存储层中的 View 执行此操作,那么是的,您可以让它工作,但是一旦您从数据库更新模型,您将不得不重新执行此操作 - 我不建议这样做。您最好与 DBA 一起调整数据库中的关键约束。

The Views don't have any relationships to the other table entities. These associations need to be manually added in order to link a View -> Table.

这对我来说经常是一个问题。有时您可以毫无问题地添加键和创建关系,但通常您可能不得不更改键和/或数据库中的关系以使其工作——这取决于您的要求;即使在使用表实体时,您也可能不得不处理这个问题。

希望这对您有所帮助。

关于c# - 最佳实践 - 在 EntityFramework 中混合表实体和 View 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9016079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com