我有一个遗留数据库,我想与实体框架进行交互。
该数据库经过高度规范化,用于存储有关航班的信息。为了更容易地处理某些数据,编写了许多 SQL 视图来扁平化数据并将某些多表连接转换为更多逻辑信息。
快速查看后,我发现在 EF 中使用视图有两个问题。
视图包含很多很多键。一些快速谷歌搜索似乎表明我需要手动编辑 EDMX 文件才能删除此信息。
视图与其他表实体没有任何关系。需要手动添加这些关联才能链接视图 -> 表。
当 DBA 团队进行更改时,从数据库刷新模型时,这两个似乎都是主要痛点。
这是否只是您在使用 EF 时需要“忍受”的事情,或者是否有任何建议的模式/实践来处理这些问题。
将表实体与视图实体混合在一起是可以的,这很大程度上取决于您的要求。
我的经验是这些是你必须处理的事情。
当我第一次开始使用实体时,我经常使用视图,因为我被告知我需要使用它们。随着我对 Entity 越来越熟悉,我开始prefer使用表实体而不是视图实体;主要是因为我觉得我有更多的控制权。当您呈现只读信息或如您所描述的那样(展平数据、枢轴、连接等)时,视图是可以的;但是,当您的需求发生变化并且现在必须添加 CRUD 时,您将不得不使用存储过程或更改模型以使用表实体,因此您最好从一开始就使用表实体。
视图包含很多很多键。一些快速谷歌搜索似乎
表示我需要手动编辑 EDMX 文件才能删除此文件
信息。
这对我来说从来都不是真正的问题。您可以在设计器中撤消视图实体的键。如果您谈论的是对存储层中的视图执行此操作,那么是的,您可以使其工作,但是一旦您从数据库更新模型,您将不得不再次执行此操作 - 我不建议这样做。您最好与 DBA 一起调整数据库中的关键约束。
视图与其他表实体没有任何关系。
需要手动添加这些关联才能链接视图
-> 表。
这是often对我来说是个问题。有时您可以毫无问题地添加键并创建关系,但通常您可能必须更改数据库中的键和/或关系才能使其正常工作 - 这取决于您的要求;即使使用表实体,您也可能必须处理这个问题。
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)