Я работаю над проектом, в котором я хочу проанализировать xml-файл в базе данных sqlite.У меня возникла проблема, когда мое значение идентификатора (в данном случае TrackDataVersion
) становится переопределенным в тот момент, когда я вставляю его в базу данных.У меня есть следующий объект:
public class TrackData
{
private int trackDataVersion;
// many other variables
public int TrackDataVersion { get => trackDataVersion; set => trackDataVersion = value; }
// many other properties
private void FillAttribute(XmlNode node)
{
string id = node.Attributes[1].InnerText;
string value = node.Attributes[2].InnerText;
switch (id)
{
case "stredatversion":
int.TryParse(value, out trackDataVersion);
break;
//many other cases
}
}
В моем databaseContext
я установил DatabaseGenereratedOption
с текучим API на «NONE», поэтому он не должен генерироваться:
modelBuilder.Entity<TrackData>()
.HasKey(trackData => trackData.TrackDataVersion)
.Property(trackData => trackData.TrackDataVersion)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
//other entities
var sqliteConnectionInitializer = new SqliteDropCreateDatabaseWhenModelChanges<DatabaseContext>(modelBuilder);
Database.SetInitializer(sqliteConnectionInitializer);
(Я также попробовал это с аннотацией, но она также не работала)
Я отлаживал проблему и до тех пор, пока я не вставлю Entity в базу данных, TrackDataVersion
будет иметь значение 162 (мое указанное значение).Но когда я проверяю свою базу данных после вставки, значение меняется на 1.
Что я делаю не так?
РЕДАКТИРОВАТЬ У меня проблема, так как я изменил тип данных сtrackDataVersion
от двойного до межд.До этого он работал нормально, но это не тот тип данных, который я хочу использовать.