Entity framework 是否有一种方法可以避免同一数据库表中有两个存储库对象?
我目前在一个使用EF作为ORM选择的团队中工作 我们有一个包含许多EDMX文件的公共项目。 这样做的原因是为了保持EDMX文件小且易于管理,同时还允许它们关注数据库中的一组概念表 乙二醇Entity framework 是否有一种方法可以避免同一数据库表中有两个存储库对象?,entity-framework,entity-framework-4,repository,Entity Framework,Entity Framework 4,Repository,我目前在一个使用EF作为ORM选择的团队中工作 我们有一个包含许多EDMX文件的公共项目。 这样做的原因是为了保持EDMX文件小且易于管理,同时还允许它们关注数据库中的一组概念表 乙二醇 Orders.edmx Users.edmx Trades.edmx 这些都指向同一数据库上的一组不同的表。 我现在需要将用户表添加到Trade.edmx文件中。由于用户表已经在user.edmx文件中,这会在不同的名称空间下创建两次相同的用户类型,这意味着我需要2个UserRepository对象 Co
- Orders.edmx
- Users.edmx
- Trades.edmx
- Common.data.trade.User
- Common.data.users.User
如果您正在使用POCO generator,您可以更新Trades.edmx的模板,以不生成新的
用户
类及其上下文模板,从而从用户
命名空间使用用户类,我们将不胜感激。EF仅通过类名(省略名称空间)将POCO类与designer中的实体相匹配,因此它可以工作
缺点是在两个映射文件中都有用户实体,必须在这两个文件中更新它,否则应用程序会在运行时抛出异常
出现此问题的原因是您的体系结构—在开始时,您需要分离的模型,但知道您需要组合来自不同模型的实体。这些要求相互矛盾。要么使用分离模型,其中Trade只知道userID而不知道任何导航属性(如在另一个数据库中定义),要么将所有实体移动到单个EDMX以支持您的新需求。我首先使用上下文扩展/实现对代码执行此操作,IE我为每个分隔上下文创建一个单独的接口,并在共享用户的单个DBContext中实现它们table@Luke:首先使用代码很容易,但使用EDMX非常复杂,其中上下文和实体通常由某个模板或代码生成器生成和维护。@LadislavMrnka我同意,使用EDMX会减少您对所见即所得的控制,这也是我更喜欢代码优先的原因之一