我目前在一个使用EF作为首选ORM的团队中工作。
我们有一个包含许多EDMX文件的常见项目。 这样做的原因是保持EDMX文件小而易于管理,同时还允许它们专注于数据库上的一组概念表。
例如
这些都指向相同数据库上的一组不同的表。
我现在需要将用户表添加到Trade.edmx 文件中。由于用户表已经在user.edmx 文件中,因此在不同的命名空间下两次创建相同的用户类型,这意味着我需要2个UserRepository对象。
有没有办法避免同一个表的2个存储库对象?
任何建议都将不胜感激
答案 0 :(得分:1)
如果您正在使用POCO生成器,则可以更新Trades.edmx的模板,以便不生成新的User
类及其上下文模板,以使用Users
命名空间中的User类。 EF将POCO类与设计器中的实体仅通过类名(命名空间被省略)匹配,因此它可以工作。
缺点是你有两个映射文件中的User实体,你必须在两个文件中更新它,或者你的应用程序在运行时抛出异常。
这个问题的原因是你的架构 - 一开始你想要分离的模型,但知道你想要组合来自不同模型的实体。那些是矛盾的要求。使用单独的模型,其中Trade只知道没有任何导航属性的userID(如果它在另一个数据库中定义)或将所有实体移动到单个EDMX以支持您的新需求。