我有我的课程FileDownloadContentModel
延伸IBaseContentModel
public class FileDownloadContentModel : IBaseContentModel
{
public string url { get; set; }
public string filename { get; set; }
public int downloadPercentage { get; set; }
public DateTime dateDownloaded { get; set; }
public byte[] content { get; set; }
}
这里是IBaseContentModel
:
public class IBaseContentModel
{
[PrimaryKey]
public int id { get; set; }
public IBaseContentModel()
{
id = GenerateID();
}
protected static int GenerateID()
{
DateTime value = DateTime.UtcNow;
//create Timespan by subtracting the value provided from the Unix Epoch
TimeSpan span = (value - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime());
//return the total seconds (which is a UNIX timestamp)
return (int)span.TotalSeconds;
}
}
由于某种原因,sqlite-net 在获取表映射时无法识别主键。它声明主键为空。如果我直接在我的FileDownloadContentModel
类中包含 id(主键),它能够将主键识别为 id。
这是一个已知的错误还是我在这里做错了什么?任何帮助表示赞赏,谢谢!
更新
我现在对它进行了更多的研究,这是我的一个愚蠢的错误。我有两个 sqlite 的“实例”,由于某种原因,IBaseContentModel 使用的 sqlite 实例与 FileDownloadContentModel 不同,这就是无法识别主键的原因(因为它不是来自同一个实例)。例如,我的意思是两个完全不同的 sqlite.cs 文件,它们具有不同的包名称。