Ich habe das folgende json-Objekt, wo ich versuche, sie in zwei verschiedenen Tabellen in der SQLite zu speichern. Hier ist das Szenario, ich lade einen Schüler zuerst herunter und überprüfe die Datenbank, und alles sieht gut aus.OneToMany Relationale Datenbank
Allerdings, wenn ich eine andere Gruppe von Schülern in die vorhandenen Tabellen einfügen. einige StudentId
's erhalten NULL für die erste Menge des Datensatzes, aber die letzte Datenmenge StudentId
ist richtig.
Im Detail haben Sie viele gleiche studentId
in der StudentSpecifications
Tabelle. Wenn der zweite Datensatz, der eingefügt werden soll, denselben StudentId
hat, betrifft dies den ersten Datensatz und macht ihn NULL
, aber der zweite Datensatz StudentId
ist richtig.
StudentId wird als ForeignKey
verwendet. Ich vermute, dass ich OnetoMany
Beziehung verwende, aber ich weiß nicht, wie man damit umgeht?
Student: [
{
StudentId: "3322449c-cd89-4633-ae3a-4578572eeeee",
Name: "Joseph Peter",
Qualification: "1222449c-efds-rfcs-asde-8546242kkkkk",
StudentSpecifications: [
{
Id: "45e63840-0dc3-4296-a83d-97cc462b2dac",
EnrollDate: "2016-08-05T09:40:21.233",
GraduationDate: "2017-06-05T09:40:21.233",
},
{
Id: "25fffe40-0dc3-4296-a83d-97cc462b2dac",
EnrollDate: "2015-07-05T09:40:21.233",
GraduationDate: "2016-08-05T09:40:21.233",
},
}
]
Student.cs
[OneToMany(CascadeOperations = CascadeOperation.All)]
public List<StudentSpecification> StudentSpecifications { get; set; }
public Student(StudentDto dto)
{
Id = dto.StudentId.ToString();
Name = dto.Name;
QualificationId = dto.QualificationId.ToString();
StudentSpecifications= dto.StudentSpecification.Select(x => new StudentSpecification(x, Id)).ToList();
}
StudentSpecification.cs
[Table("STUDENT_SPECIFICATIONS")]
public class StudentSpecification
{
[PrimaryKey]
public string Id{get;set;}
[ForeignKey(typeof(Student))]
public string StudentId { get; set; }
public DateTime EnrollDate{ get; set; }
public DateTime GraduationDate{ get; set; }
public StudentSpecification(StudentDto dto, string studentId)
{
Id = Guid.NewGuid().ToString();
StudentId = studentId;
EnrollDate= dto.EnrollDate;
GraduationDate= dto.GraduationDate;
}
in die Tabelle einfügen
public bool AddOrUpdate(IEnumerable<T> entities, bool withChildren = false)
{
var db = _factory.GetConnectionWithLock();
using (db.Lock())
{
db.InsertOrReplaceAllWithChildren(entities, true);
return true;
}
}
Können Sie den Code für 'Student.cs' veröffentlichen? Es scheint unvollständig zu sein, und Sie können nicht mit "OneToMany" eine Klasse kommentieren. – redent84
@ redent84, Sie haben Recht, es ist mein Fehler. Ich habe das fehlende Stück hinzugefügt. – hotspring