Remotion.Linq.SqlBackend.UnitTests.MappingResolverStub.ResolveJoinInfo C# (CSharp) Метод

ResolveJoinInfo() публичный Метод

public ResolveJoinInfo ( UnresolvedJoinInfo joinInfo, UniqueIdentifierGenerator generator ) : ResolvedJoinInfo
joinInfo Remotion.Linq.SqlBackend.SqlStatementModel.Unresolved.UnresolvedJoinInfo
generator UniqueIdentifierGenerator
Результат Remotion.Linq.SqlBackend.SqlStatementModel.Resolved.ResolvedJoinInfo
    public ResolvedJoinInfo ResolveJoinInfo (UnresolvedJoinInfo joinInfo, UniqueIdentifierGenerator generator)
    {
      if (joinInfo.MemberInfo.DeclaringType == typeof (Cook))
      {
        switch (joinInfo.MemberInfo.Name)
        {
          case "Substitution":
            return CreateResolvedJoinInfo (
                joinInfo.OriginatingEntity,
                "ID",
                typeof (int),
                true,
                CreateResolvedTableInfo (joinInfo.ItemType, generator),
                "SubstitutedID",
                typeof (int),
                false);
          case "Substituted":
            return CreateResolvedJoinInfo (
                joinInfo.OriginatingEntity,
                "SubstitutedID",
                typeof (int),
                false,
                CreateResolvedTableInfo (joinInfo.ItemType, generator),
                "ID",
                typeof (int),
                true);
          case "Assistants":
            return CreateResolvedJoinInfo (
                joinInfo.OriginatingEntity,
                "ID",
                typeof (int),
                true,
                CreateResolvedTableInfo (joinInfo.ItemType, generator),
                "AssistedID",
                typeof (int),
                false);
          case "Kitchen":
            return CreateResolvedJoinInfo (
                joinInfo.OriginatingEntity,
                "KitchenID",
                typeof (int),
                false,
                CreateResolvedTableInfo (joinInfo.ItemType, generator),
                "ID",
                typeof (int),
                true);
          case "Knife":
            var joinedTableInfo = CreateResolvedTableInfo (joinInfo.ItemType, generator);
            var leftKey = ResolveMemberExpression (joinInfo.OriginatingEntity, typeof (Cook).GetProperty ("KnifeID"));
            var rightKey = ResolveSimpleTableInfo (joinedTableInfo, generator).GetIdentityExpression();
            return new ResolvedJoinInfo (joinedTableInfo, Expression.Equal (leftKey, rightKey));
        }
      }
      else if (joinInfo.MemberInfo.DeclaringType == typeof (Kitchen))
      {
        switch (joinInfo.MemberInfo.Name)
        {
          case "Cook":
            return CreateResolvedJoinInfo (
                joinInfo.OriginatingEntity,
                "ID", typeof (int), true, CreateResolvedTableInfo (joinInfo.ItemType, generator), "KitchenID", typeof (int), false);
          case "Restaurant":
            return CreateResolvedJoinInfo (
                joinInfo.OriginatingEntity,
                "RestaurantID", typeof (int), false, CreateResolvedTableInfo (joinInfo.ItemType, generator), "ID", typeof (int), true);
        }
      }
      else if (joinInfo.MemberInfo.DeclaringType == typeof (Restaurant))
      {
        switch (joinInfo.MemberInfo.Name)
        {
          case "SubKitchen":
            return CreateResolvedJoinInfo (
                joinInfo.OriginatingEntity,
                "ID", typeof (int), true, CreateResolvedTableInfo (joinInfo.ItemType, generator), "RestaurantID", typeof (int), false);
          case "Cooks":
            return CreateResolvedJoinInfo (
                joinInfo.OriginatingEntity,
                "ID", typeof (int), true, CreateResolvedTableInfo (joinInfo.ItemType, generator), "RestaurantID", typeof (int), false);
          case "CompanyIfAny":
            return CreateResolvedJoinInfo (
                joinInfo.OriginatingEntity,
                "CompanyID",
                typeof (int?), 
                false, 
                CreateResolvedTableInfo (joinInfo.ItemType, generator), 
                "ID", 
                typeof (int), 
                true);

        }
      }
      else if (joinInfo.MemberInfo.DeclaringType == typeof (Company))
      {
        switch (joinInfo.MemberInfo.Name)
        {
          case "AllRestaurants":
            return CreateResolvedJoinInfo (
                joinInfo.OriginatingEntity,
                "ID",
                typeof (int), true, CreateResolvedTableInfo (joinInfo.ItemType, generator), "CompanyID", typeof (int?), false);
        }
      }

      throw new UnmappedItemException ("Member " + joinInfo.MemberInfo + " is not a valid join member.");
    }