C# EntityFramework 6和System.Data.Sqlite PK在插入时被覆盖
我正在做一个项目,我想把一个xml文件解析成一个sqlite数据库。我的ID值(在本例中是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 =
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。在此之前,它工作正常,但它不是我想要使用的正确数据类型