Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EntityFramework 6和System.Data.Sqlite PK在插入时被覆盖_C#_Entity Framework_Sqlite_Entity Framework 6_System.data.sqlite - Fatal编程技术网

C# EntityFramework 6和System.Data.Sqlite PK在插入时被覆盖

C# EntityFramework 6和System.Data.Sqlite PK在插入时被覆盖,c#,entity-framework,sqlite,entity-framework-6,system.data.sqlite,C#,Entity Framework,Sqlite,Entity Framework 6,System.data.sqlite,我正在做一个项目,我想把一个xml文件解析成一个sqlite数据库。我的ID值(在本例中是TrackDataVersion)在我将其插入数据库时被覆盖,我遇到了一个问题。 我拥有以下实体: public class TrackData { private int trackDataVersion; // many other variables public int TrackDataVersion { get => trackDataVersion; set =

我正在做一个项目,我想把一个xml文件解析成一个sqlite数据库。我的ID值(在本例中是
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
中,我使用fluent API将
databasegeneratedoption
设置为“无”,因此不应生成:

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);
modelBuilder.Entity()
.HasKey(trackData=>trackData.TrackDataVersion)
.Property(trackData=>trackData.TrackDataVersion)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
//其他实体
var sqliteConnectionInitializer=new SqliteDropCreateDatabaseWhenModelChanges(modelBuilder);
SetInitializer(sqliteConnectionInitializer);
(我也尝试了注释,但也不起作用)

我已经调试了这个问题,直到我将实体插入数据库
TrackDataVersion
为止,它的值为162(我指定的值)。但是,当我在插入后检查数据库时,值更改为1

我做错了什么

编辑 我有这个问题,因为我将数据类型从
trackDataVersion
从double更改为int。在此之前,它工作正常,但它不是我想要使用的正确数据类型