Errore entity Framework e SQLite

di Anonimizzato21367 il
11 risposte
Ciao a tutti..
ho seriamente un problema con un progetto in c# e entity framework core ...

tutte le volte che provo ad aggiungere un record di una tabella collegata ottengo questo errore...
[CODE]Object reference not set to an instance of an object. notare che ho due tabelle una person
[CODE] public class Person { [Key] [Required] public int PersonID { get; set; } public string PersonCode { get; set; } public TPerson tPerson { get; set; } public string Name { get; set; } public string Surname { get; set; } public string FiscalCode { get; set; } public string VatCode { get; set; } [NotMapped] public string FullName { get { return Name + " " + Surname; } } public virtual ICollection<Contact> Contacts { get; set; } } quella contacts [CODE] public class Contact { [Key] [Required] public int ContactId { get; set; } // Collega i contatti alle persone public int IDPerson { get; set; } public virtual Person Person { get; set; } public TContact tContact { get; set; } public string Name { get; set; } public string Description { get; set; } } è da notare che in fase di migration e database update non ho errori
(come se aggiungo la singola persona)
questo il codice incriminato [CODE] public static void Main() { using (var db = new ASDDb()) { var newIndex = db.People.Count()==0 ? 0: db.People?.Max(a => a.PersonID) + 1 ?? 0; var ciccio = new Person { //PersonID = newIndex, Name = StringFunction.RndString(8, Chars: true), Surname = StringFunction.RndString(8, Chars: true), FiscalCode = StringFunction.RndString(15, Chars: true), tPerson = TPerson.Person, }; for (int i = 0; i < RandomNumber(1, 5); i++) { ciccio.Contacts.Add(new Contact { //ContactId = i, //IDPerson = ciccio.PersonID, Name = StringFunction.RndString(25, Chars: true), tContact = TContact.FaceBook }); }; db.People.Add(ciccio); db.SaveChanges(); lasciando perdere StringFunction.RndString(25, Chars: true) che mi crea una stringa casuale...

l'errore mi viene dato nella creazione di contact....

scusate se vi è utile questa è la stringa di connessione.... [CODE] protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder .UseSqlite("Data Source=ASDDb.db"); }

11 Risposte

  • TPerson == NULL ance anche TContact?
  • Tuc ha scritto:


    TPerson == NULL ance anche TContact?
    yes ma stesso medesimo errore
  • Object reference not set to an instance of an object.
    in pratica, una o più classi non sono creare.
    TPerson tp = new TPerson(); .... etc...
  • Tperosn è un enum
  • System.NullReferenceException
    HResult=0x80004003
    Message=Object reference not set to an instance of an object.
    Source=ASDGest
    StackTrace:
    at ASDGest.Program.Main() in E:\MyProject\ASDGest\Program.cs:line 52

    ho eliminato i campi di tipo enum ed ottengo cmq questo errore
  • Umm ciccio.Contacts e NULL?
    ciccio.Contacts = new Collection<Contact>();
    Linea 52 e ciccio.Contacts.Add(new Contact ???
  • .Contacts è la collection di contact allegata a Person...
    Sto provando ad aggiungervi un contatto....
  • Si parte che è vuota....
  • Sembra che con ciccio.Contacts.add non funzioni....

    facendo db.Contacts.add invece si

    mi ricordavo che col primo metodo si passava anche l'id di person o dico una gran ca**ata???
  • Non so se mi sono perso qualcosa, ma prima devi fare new di Contacts, no?
  • golosauro ha scritto:


    Non so se mi sono perso qualcosa, ma prima devi fare new di Contacts, no?
    il problema non è fare il new di contact...
    funziona anche facendolo dentro l'add...

    ma io ero convinto che facendo l'add dentro all'ICollection Contacts di ciccio mi abbinasse in modo automatico la chiave primaria...
    non mi funziona...
    devo abbinargliela io e aggiungere i dati nel dbset contacts
Devi accedere o registrarti per scrivere nel forum
11 risposte