我正在为微软的 Pubs 数据库的一个子集构建一个实体框架模型。我只对出版商和书籍感兴趣,而不是出版商和员工,但出版商和 emoloyees 表之间存在外键约束。当我从模型中删除员工实体时,由于外键约束,模型将无法验证。
当该子集链接到具有外键约束的其他表时,如何为该数据库子集创建模型?
因为这是一个演示,我从数据库中删除了有问题的表和约束,但这在生产中不起作用。
我正在为微软的 Pubs 数据库的一个子集构建一个实体框架模型。我只对出版商和书籍感兴趣,而不是出版商和员工,但出版商和 emoloyees 表之间存在外键约束。当我从模型中删除员工实体时,由于外键约束,模型将无法验证。
当该子集链接到具有外键约束的其他表时,如何为该数据库子集创建模型?
因为这是一个演示,我从数据库中删除了有问题的表和约束,但这在生产中不起作用。
您可以创建相关数据的视图并将您的模型绑定到该视图。我不是数据库专家,但我以前共事过的 DBA 推荐了这种方法,因为她说数据库服务器上的视图一开始就不太密集。
在 3.5 SP1 发布之前,我们在 LINQ to SQL 之上构建了一个 DAL(没有 DBML 映射,但这是另一回事),它将所有域对象映射到存储过程或视图。这样一来,DBA 对遵循更多设置的执行计划以及能够将数据库逻辑封装在代码库之外的调用感到高兴。
正确的方法是将外键列公开为标量属性。在这篇博文中有完整的解释和可下载的示例代码。 您可能会发现帖子的其余部分也很有趣。