2

Entity Framework 和 ORM 的新手,但是可能有一个独特的情况,我们正在考虑在某种程度上重构我们的应用程序的工作方式。

现在我们正在使用内存分布式缓存架构,基本上作为内存数据库,效率相当低且容易出错,因此与持久数据的同步,甚至缓存中的对象都不一致。

这个想法是有点回到核心,要么集成某种形式的 ORM,比如实体框架,要么在 SQL 中手动创建存储过程,以引入创建复杂类所需的数据。

举个例子,假设我们有一个类SomeDashboard,它将有许多基于Dashboard请求设置的属性(存储在 SQL 中),但随后有许多与 相关的对象列表Dashboard,例如ProductsorReviews等​​。可以写一个存储过程,它将利用单个数据库请求,该请求将拉回多个结果集以创建所有这些列表和对象值。

创建存储过程来做到这一点会更好,还是创建多个存储过程来获取数据(意味着更多的 SQL 调用),或者捎带实体框架来将所有对象拼凑在一起会更好吗?

一些不稳定的东西,导致需要经常重建;每次我们构建对象时,担心使用如此多的连接和如此多的请求来扩展数据库。

也许这足以给出某种形式的方向。我知道这充其量是模糊的。

与实体框架相关的问题的另一部分是——将所有内容映射到现有数据库和类有多难?

从高层次上看……感觉内存分布式缓存的集成没有很好地考虑,并且以“抢先优化”的方式完成,它导致的问题多于解决问题;所以回到根源并大量使用 SQL,然后在可能需要的地方有选择地集成缓存,当 SQL 的性能成为问题时似乎是最好的主意。

4

1 回答 1

1

关于问题的第一部分,您应该在 Entity Framework 上使用预先加载并让它为您查询数据。这是使用 OR/M 的目的:您专注于应用程序代码,而 OR/M 负责读取和写入数据到 SQL 数据源的原始部分。

查看此 MSDN 文章:加载相关实体

关于...

与实体框架相关的问题的另一部分是——将所有内容映射到现有数据库和类有多难

这个没有确定的答案。这可能取决于您的数据库设计。如果您的数据库是使用良好的关系设计实践构建的,通常 OR/M 将更容易针对该数据库进行配置。

于 2016-03-20T09:01:54.550 回答