我在 Xamarin Android 应用程序中使用 SQLite.Net。我有一个看起来像这样的实体:
[DataEntity]
public class AuditEntity
{
[PrimaryKey]
public Guid EntryId { get; set; }
public string Action { get; set; }
public string GeoLocation { get; set; }
public DateTime Time { get; set; }
}
我有一个通用的插入方法,如下所示:
public int Insert<T>(T obj) where T : class
{
var result = 0;
try
{
result = Connection.Insert(obj);
}
catch (SQLiteException ex)
{
Mvx.Trace(MvxTraceLevel.Error, $"Exception while inserting into database:\r\n{ex.ToLongString()}");
}
return result;
}
我将以下对象传递给此方法:
var auditEntry = new AuditEntity
{
EntryId = Guid.NewGuid(),
Action = uri.ToString(),
GeoLocation = geoLocation,
Time = DateTime.Now
};
偶尔会抛出 SQLite 异常,并显示“约束”消息,我理解这是违反主键的。
(自动创建的)表中的 EntryId 列的类型为 varchar(36)。
为什么插入有时会抛出异常?
如果我使用非泛型方法,即通过参数化命令进行插入,我看不到异常,但我宁愿使用泛型方法。