如何处理TimeSpan以使用EF6将其保存在SQLite中

时间:2018-01-26 12:05:36

标签: c# entity-framework sqlite

我有一个包含3个属性的模型:

public class SomeModel
{
    [Key]
    public int SomeInt { get; set; }

    public string SomeString { get; set; }

    public TimeSpan Time { get; set; }
}

如果我尝试将这样的模型添加到我的SQLite数据库中,则会抛出异常。

        using (var db = new MyDataContext())
        {
            var item = new SomeModel { SomeInt = 123, SomeString = "a string" , Time = new TimeSpan(1,2,3)};
            db.SomeModels.Add(item);
            try
            {
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.ReadLine();
                throw;
            }
        }

例外:

System.NotSupportedException: "There is no store type corresponding to the EDM type 'Edm.Time' of primitive type 'Time'."

有没有办法将此模型添加到数据库?

1 个答案:

答案 0 :(得分:1)

我建议使用integer代替TimeSpan字段,例如:

public Int64 TimeSpanTicks{ get; set; }     

[NotMapped]
public TimeSpan Time 
{
    get { return TimeSpan.FromTicks(TimeSpanTicks); }
    set { TimeSpanTicks= value.Ticks; }
}