【发布时间】:2017-09-15 15:23:54
【问题描述】:
我正在尝试在 Xamarin 跨平台应用程序中建立两个表以及它们之间的关系。这是表格的代码:
[Table("DetailTypes")]
public class DetailType
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string Detail { get; set; }
}
和
[Table("DateDetails")]
public class DateDetail
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public int ID_Date { get; set; }
public string Wert { get; set; }
public DateTime Datum { get; set; }
[ForeignKey(typeof(DetailType))]
public int DetailTypeId { get; set; }
[OneToOne]
public DetailType DetailType { get; set; }
}
表的创建代码如下:
public ItemDatabase(string dbPath)
{
database = new SQLiteAsyncConnection(dbPath);
database.CreateTableAsync<DateDetail>().Wait(); //Error is thrown here
database.CreateTableAsync<DetailType>().Wait();
}
运行代码时,我收到错误“发生未处理的异常”。在标记的行中。第一个表是在此时创建的。我做错了什么?
另一个问题:按特定顺序创建表是否重要,因为它们相互依赖?
编辑:
StackTrace 异常(System.NotSupportedException):
在 System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00011] in :0 在 System.Threading.Tasks.Task.Wait (System.Int32 毫秒超时,System.Threading.CancellationToken cancelToken ) [0x00043] in :0 at System.Threading.Tasks.Task.Wait () [0x00000] in :0 at .CODE.Data.ItemDatabase..ctor (System. String dbPath) [0x00028] in D:\CODE_COPY\EigeneProjekte\CN__Xamarin*********\CODE\Data\ItemDatabase.cs:22
编辑 2: 如果我仔细查看异常,我会发现以下消息:
Don't know about XXX.CODE.Models.DetailType
这是可以理解的,因为此时尚未构建表 DetailType。但是我应该如何通过 ORM 创建关系呢?是否可以一次创建所有表以确保关系正确且没有表丢失?
【问题讨论】:
-
使用 try/catch 获取实际异常
-
该异常是否有原因?因为它没有说任何有用的东西
-
@redent84 很抱歉我的回答迟了,感谢您提供帮助。我已经更新了我的问题,你能看看吗?谢谢:-)
标签: c# xamarin mvvmcross sqlite-net sqlite-net-extensions