带有System.Data.Sqlite PK的EntityFramework 6在插入

时间:2019-03-04 13:37:51

标签: 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 = 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中,我将使用流畅API的DatabaseGenereratedOption设置为“ 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从double更改为int。在此之前,它可以正常工作,但它不是我要使用的正确数据类型。

0 个答案:

没有答案