2012-06-05 34 views
1

我最近经历了修改我的数据库的过程,规范了很多实体。很显然,我现在有比我更多的桌子了。我在网站上使用的大量数据是只读的,所以使用视图非常简单,但有些实体可能受益于非规范化检索,但仍需要更新。需要的建议 - 使用规范化数据的实体框架

下面是一个例子。

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产生retreival查询。我读过的东西表明EF不擅长处理加入的数据。

我可以添加这两种视图和表格,使用仅更新表。由于模型的重复性,复杂性以及EF模型功能的不足,这看起来很sl sl。

也许我可以用数据检索的只读视图和创建存储特效。我相信在存储过程中使用EF的过程有些诡异,因此我可能会将存储的过程与EF区分开来,只需传递参数并通过传统方法调用SP即可。这又似乎是一个中途之家。

我不会与.NET或EF经历,所以想知道关于任我上面提到的方法或任何更好的方法来达致这一些可行的建议。我不想在这个阶段攻击edmx文件,因为......这只是错误的。

我有几个实体可以从正确的解决方案中受益。用户示例是最简单的,所以从正确的方法中可以获得很多。

帮助和建议将非常感激。

回答

1

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

结合阅读映射视图和映射表进行修改是可能的,但它主要是第一个解决方案(允许EF来处理一切)与一些查询优化的补充意见。

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

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