Firebird 3.0 Non riesco ad aggiungere una view nel modello

di il
7 risposte

Firebird 3.0 Non riesco ad aggiungere una view nel modello

Buongiorno a tutti,

sto cercando di impostare ed iniziare un programma con Entity.Framework.Firebird, ma sono arrivato ad un punto per me difficile.

Database First.
ho aggiunto la tabella Anagrafiche al Modello
ho aggiunto all'origine dati l'oggetto anagrafiche e l'ho visualizzato in un DataGridView

quando cerco di aggiungere una view al Modello mi da errore perché non trova la Primary Key.
Come posso aggiungerla?

L'errore che mi da é questo:

Errore 6013: Per la tabella/visualizzazione 'Firebird.Firebird.DTBOLLEPAGATE' non è stata definita alcuna chiave primaria e non è possibile dedurre una chiave primaria valida. La tabella/visualizzazione è stata esclusa. Per utilizzare l'entità, è necessario esaminare lo schema, aggiungere le chiavi corrette e rimuovere i commenti. ...nel file \Model1.edmx

Ecco la view:
CREATE VIEW DTBOLLEPAGATE
(
  NOTE,
  RAGIONE_SOCIALE,
  NUMERO,
  "DATA",
  IMPONIBILE,
  IVA,
  TOTALE,
  ANNOTAZIONI,
  TIPO,
  CLIENTE,
  CAUSALE_TRASPORTO
)
AS
SELECT anagrafiche.note, documenti.ragione_sociale, documenti.numero, documenti.data, documenti.imponibile, documenti.IVA, documenti.totale, documenti.annotazioni, documenti.tipo, anagrafiche.cliente, documenti.causale_trasporto
FROM anagrafiche INNER JOIN documenti ON anagrafiche.codice = documenti.codice_cliente
WHERE (((anagrafiche.note) Not Like '100') AND ((documenti.data)> 44196) AND ((documenti.tipo)=0) AND ((anagrafiche.cliente)=True) AND ((documenti.causale_trasporto)=1) AND ((documenti.gia_usata)=0));
Questa view prende i dai dalla TAB Anagrafiche e dalla TAB Documenti - che devo ancora aggiungere al Modello -

Questo problema è tipico di Firebird oppure anche di SQLServer con db.mdf?

Grazie
Ciao
Massimo

7 Risposte

  • Re: Firebird 3.0 Non riesco ad aggiungere una view nel modello

    Non mi pare un problema del Dbms (qualunque sia) ma di progettazione del DB. Perché non hai una chiave primaria nella tabella indicata?
  • Re: Firebird 3.0 Non riesco ad aggiungere una view nel modello

    Ciao
    grazie la risposta.

    Il db e' un db tradotto da db.mdb a db.gdb. Non l'ho fatto io.

    Nel db.mdb la TAB anagrafiche ha la colonna Codice come chiave primaria.

    Ecco il file Model1.edmx
    <EntityType Name="ANAGRAFICHE">
              <Key>
                <PropertyRef Name="CODICE" />
              </Key>
              <Property Name="CODICE" Type="int" Nullable="false" />
    ciao
  • Re: Firebird 3.0 Non riesco ad aggiungere una view nel modello

    IronButterfly ha scritto:


    Questo problema è tipico di Firebird oppure anche di SQLServer con db.mdf?
    L'errore proviene da EF, quindi non si tratta di un problema di FB, a meno che tu non abbia realmente definito una chiave e questa non risulti identificata correttamente.

    La chiave primaria è uno strumento di cui EF necessita per identificare univocamente la corrispondenza entità/record.

    Includi un campo con la chiave nella VIEW, oppure - visto che usi EF - costruiscila direttamente con il linguaggio di programmazione (immagino C# o VB.NET) usando gli oggetti di EF e una espressione LINQ.
  • Re: Firebird 3.0 Non riesco ad aggiungere una view nel modello

    IronButterfly ha scritto:


    Il db e' un db tradotto da db.mdb a db.gdb. Non l'ho fatto io.
    Usare un DB esistente e non ottimizzato con EF è una vera scommessa.
    Lo è quando si tratta di un database SQL Server, figuriamoci con altri formati.

    IronButterfly ha scritto:


    Nel db.mdb la TAB anagrafiche ha la colonna Codice come chiave primaria.
    Quel campo però non è presente nella vista.

    Ciao!
  • Re: Firebird 3.0 Non riesco ad aggiungere una view nel modello

    Aka ha scritto
    Quel campo però non è presente nella vista.
    Il codice dell'esempio non ha la colonna CODICE della tabella Anagrafiche, mentre nel mio db è presente.

    Il campo CODICE della Tabella Anagrafiche e' Primary Key e si trova anche nella Vista.

    Come si puo' fare per mettere a posto?

    Grazie
    ciao
  • Re: Firebird 3.0 Non riesco ad aggiungere una view nel modello

    IronButterfly ha scritto:


    Il codice dell'esempio non ha la colonna CODICE della tabella Anagrafiche, mentre nel mio db è presente.
    Il campo CODICE della Tabella Anagrafiche e' Primary Key e si trova anche nella Vista.
    E allora io mi chiedo, perché poni un problema che riguarda un campo mancante e poi posti una versione del codice che non è quella effettiva? Perché costringi chi ti aiuta ad analizzare qualcosa che è diverso dal reale?

    IronButterfly ha scritto:


    Come si puo' fare per mettere a posto?
    Intanto posta il codice corretto, effettivo, attuale, poi ne parliamo.
  • Re: Firebird 3.0 Non riesco ad aggiungere una view nel modello

    Ciao
    Eccolo qua:
    
    --View: DTBOLLEPAGATE
    
    --DROP VIEW DTBOLLEPAGATE;
    
    CREATE VIEW DTBOLLEPAGATE
    (
      CODICE,
      NOTE,
      RAGIONE_SOCIALE,
      NUMERO,
      "DATA",
      IMPONIBILE,
      IVA,
      TOTALE,
      ANNOTAZIONI,
      TIPO,
      CLIENTE,
      CAUSALE_TRASPORTO
    )
    AS
    SELECT anagrafiche.codice, anagrafiche.note, documenti.ragione_sociale, documenti.numero, documenti.data, documenti.imponibile, documenti.IVA, documenti.totale, documenti.annotazioni, documenti.tipo, anagrafiche.cliente, documenti.causale_trasporto
    FROM anagrafiche INNER JOIN documenti ON anagrafiche.codice = documenti.codice_cliente
    WHERE (((anagrafiche.note) Not Like '100') AND ((documenti.data)> 44196) AND ((documenti.tipo)=0) AND ((anagrafiche.cliente)=True) AND ((documenti.causale_trasporto)=1) AND ((documenti.gia_usata)=0));
    
    
    Faccio un riepilogo:
    devo importare questa View nel Modello di EF.
    Anagrafiche.codice è PK e nella Vista c'e'

    Se bisogna importare una View nel Model1 con EF, come si fa?
    OK Grazie per il tentativo
Devi accedere o registrarti per scrivere nel forum
7 risposte