#c# #entity-framework #sqlite #entity-framework-6 #system.data.sqlite
#c# #entity-framework #sqlite #entity-framework-6 #system.data.sqlite
Вопрос:
Я работаю над проектом, в котором я хочу проанализировать 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
для fluent 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);
(Я также пробовал это с аннотацией, но это тоже не сработало)
Я отладил проблему, и до тех пор, пока я не вставлю объект в базу данных, он TrackDataVersion
имеет значение 162 (указанное мной значение). Но когда я проверяю свою базу данных после вставки, значение изменилось на 1.
Что я делаю не так?
РЕДАКТИРОВАТЬ У меня проблема, так как я изменил тип данных с trackDataVersion
double на int. До этого он работал нормально, но это не тот тип данных, который я хочу использовать.