2011-09-06 149 views
0

我有两个模型;用户和客户端。用户可以拥有多个客户端,而客户端拥有一个用户。项目经理坚持要求每个用户客户端独立所以我必须为每个创建的用户动态生成新表。例如,用户ABC将有一个名为ABC_Clients的新表,用户XXX将有一个名为XXX_Clients的单独表格等等。我的问题:我如何使用实体框架来做到这一点?我可以简单地执行一个过程来创建新表,并使用ExecuteStoreQuery()执行手动查询,但它似乎不会拉回关系(即延迟加载),是否必须以某种方式构建我的查询?实体框架4.1动态生成表

+0

这个家伙需要了解关于RDBMS设计的基本知识:) –

回答

3

这是优秀的设计。这将是非常容易使用,真的很好维护。恭喜你的经理,并告诉他做他的工作,让你做你的工作。项目经理不是建筑师,通常是技术知识欠佳的人。

有没有办法来支持这与EF。你必须完全用SQL(在这种情况下实际上是动态SQL)和旧的ADO.NET来完成它。 ExecuteStoreQuery永远不会返回关系 - 它无法做到这一点。延迟加载无法正常工作,因为标准延迟加载基于使用Entity框架映射的静态数据库结构。您的Client实体不能由EF映射,因为它要求每个实体只能映射一次(=在一个表或一组相关表中以防止继承或分裂)。您的Client实体需要映射的次数与表User中的用户数量相同。

+0

我同意。他实际上是一名开发人员,并且说他是从“经验”中讲话的:如果您将客户表放入我的错误中,那么每个人都会受到影响,就好像它们被分离出来一样,并且一个客户表被错误地丢弃,它只会影响一个用户客户端。我知道他是从哪里来的,但这就是数据库备份的目的,等等。无论如何,我还是很重视。问题,谢谢:-) – eth0

+0

错误地删除表格?那是什么?这在正常的应用程序体系结构中不会发生,但它确实可能发生在您的应用程序必须具有删除和创建表的权限的体系结构中。 –

+4

@ eth0如果你有空闲时间在[The Daily WTF]上发布这个设计(http://thedailywtf.com/) – Eranga