Domanda

C'è un problema quando l'int è annullabile in GetHashCode

Al punto di GetHashCode su ActiveRecord.tt v'è la necessità per un controllo annullabile. Qualcosa di simile a questo.

<#      
    if(tbl.PK.SysType=="int" && !tbl.PK.Nullable ){
#>        
        public override int GetHashCode() {
            return this.<#=tbl.PK.CleanName #>;
        }        
<#      }#>

(aggiornamento) Questo valore può essere venire nulla sulle viste. Ho includono i punti di vista utilizzando questo codice che ho trovato su inet.

const string TABLE_SQL=@"SELECT *
    FROM  INFORMATION_SCHEMA.TABLES
    WHERE TABLE_TYPE='BASE TABLE'
    union
    select Table_catalog, table_schema, table_name, 'View' table_type 
    from information_schema.views";    

Dopo di che, viene visualizzato questo errore.

È stato utile?

Soluzione

SubSonic richiede una chiave primaria che non è nullo. È necessario modificare la visualizzazione in modo che restituisce una colonna ID che è un intero non nullo o Guid.

EDIT: è possibile aggiungere una chiave primaria non nulla che lavorerò per SubSonic cambiando la vostra vista come segue:

CREATE VIEW MyView AS
  SELECT NewID() AS Id, *
  FROM MyTable

L'unico svantaggio è che non sarà possibile ottenere un ID coerente. Se questo è un problema si potrebbe sostituire NewID () con un valore calcolato dalla colonna, ma l'inconveniente di che è la performance sarà più lento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top