【问题标题】:Entity Framework 4.1 Dynamically Generated TablesEntity Framework 4.1 动态生成的表
【发布时间】:2011-11-11 04:21:30
【问题描述】:

我有两个模型;用户和客户。一个用户可以有多个客户端,一个客户端有一个用户。项目经理坚持每个用户客户都在一个单独的表中,因此我必须为每个创建的用户动态生成新表。例如,用户 ABC 将有一个名为 ABC_Clients 的新表,用户 XXX 将有一个名为 XXX_Clients 的单独表,依此类推。我的问题:如何使用 Entity Framework 执行此操作?我可以简单地执行一个过程来创建新表并使用ExecuteStoreQuery() 进行手动查询,但它似乎并没有拉回关系(即延迟加载),我是否必须以某种方式构造我的查询?

【问题讨论】:

  • 这家伙需要学习 RDBMS 设计基础知识 :)

标签: asp.net asp.net-mvc-3 orm entity-framework-4 entity


【解决方案1】:

这是一个很棒的设计。它将非常易于使用并且非常易于维护。祝贺你的经理,告诉他做他的工作,让你做你的。项目经理不是架构师,而且通常是技术知识差的人。

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

【讨论】:

  • 我同意。他自己实​​际上是一名开发人员,并说他从“经验”中发言:如果你删除客户表是我的错误,那么每个人都会受到影响,就好像他们被分开并且一个客户表被错误地删除它只影响一个用户客户。我知道他来自哪里,但这就是数据库备份的用途,等等。无论如何,我想的一样多。这个问题,谢谢:-)
  • 误掉表?那是什么?这在正常的应用程序架构中不会发生,但它确实可以在您的应用程序必须有权删除和创建表的架构中发生。
  • @eth0 如果你有空闲时间在The Daily WTF@eth0 上发布这个设计
  • @LadislavMrnka 如果有应用程序在运行时从数据库中添加/删除 db 列,我们该怎么办?
  • @HoussamHamdan:在这种情况下你不应该使用 EF。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多