EntityFramework 6 с System.Data.Sqlite PK переопределяется при вставке - PullRequest
0 голосов
/ 04 марта 2019

Я работаю над проектом, в котором я хочу проанализировать 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 от двойного до межд.До этого он работал нормально, но это не тот тип данных, который я хочу использовать.

...