Erklärung von Oslo Fehlern „M2037: SQL-Erzeugung Interner Fehler: Fehlender Generator für Variable“?

StackOverflow https://stackoverflow.com/questions/253746

  •  05-07-2019
  •  | 
  •  

Frage

In Microsoft Oslo SDK CTP 2008 (mit IntelliPad) der folgende Code kompiliert fein:

module T {

    type A {
        Id : Integer32 = AutoNumber();
    } where identity Id;

    As : A*;

    type B {
        Id : Integer32 = AutoNumber();
//        A : A;
//    } where A in As && identity Id;
    } where identity Id;

    Bs : B*;

    type C {
        Id : Integer32 = AutoNumber();
        B : B;
    } where B in Bs && identity Id;

    Cs : C*;

}

und die Ergebnisse in dem folgenden Reach-SQL-Ausgang:

set xact_abort on;
go

begin transaction;
go

set ansi_nulls on;
go

create schema [T];
go

create table [T].[As]
(
    [Id] int not null identity,
    constraint [PK_As] primary key clustered ([Id])
);
go

create table [T].[Bs]
(
    [Id] int not null identity,
    constraint [PK_Bs] primary key clustered ([Id])
);
go

create table [T].[Cs]
(
    [Id] int not null identity,
    [B] int not null,
    constraint [PK_Cs] primary key clustered ([Id]),
    constraint [FK_Cs_B_T_Bs] foreign key ([B]) references [T].[Bs] ([Id])
);
go

commit transaction;
go

Aber nach der Kommentarzeile im Modul T wie folgt zu ändern

        A : A;
    } where A in As && identity Id;
//    } where identity Id;

die Fehlermeldung "M2037: SQL-Erzeugung Interner Fehler: Fehlender Generator für Variable 'A'". Angezeigt wird (in IntelliPad Felsen SQL-Fenstern)

Irgendwelche Ideen?

Regards, Tamberg

War es hilfreich?

Lösung

Ich denke, was Sie wollen, ist:

type A {
    Id : Integer32 = AutoNumber();
} where identity Id;

As : A*;

type B {
    Id : Integer32 = AutoNumber();
    A : A;
} where identity Id;

Bs : (B where value.A in As)*;

type C {
    Id : Integer32 = AutoNumber();
    B : B;
} where identity Id && B in Bs;

Cs : (C where value.B in Bs)*;
Hinweis

, dass die Einschränkungen sind auf den Externen, nicht die Typen hier. Ich konnte eine ähnlichen Code erhalten, wenn die Einschränkungen in denen von den Typen, aber nicht in der Lage mehr als eine Beziehung tief zu gehen. sie zu dem Externen Umzug scheint richtig und erzeugt die erwartete Reichweite SQL.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top