建设有关系的两个表失败
我试图建立两个表,并在Xamarin它们之间的关系跨plattform应用。下面是表的代码:建设有关系的两个表失败
[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();
}
运行代码时出现错误“未处理的异常发生“。在标记的行中。第一个表格是在那个时候创建的。我究竟做错了什么?
另一个问题是:是重要的建立在一定的顺序表,因为它们依赖于海誓山盟?
编辑:
堆栈跟踪异常的(System.NotSupportedException):
在System.Threading.Tasks.Task.ThrowIfExceptional(System.Boolean includeTaskCanceledExceptions)[0x00011]在< 896ad1d315ca4ba7b117efb8dacaedcf >:0在System.Threading.Tasks.Task.Wait(System.Int32 millisecondsTimeout,System.Threading.CancellationToken的CancellationToken)[0x00043]在< 896ad1d315ca4ba7b117efb8dacaedcf>:0在System.Threading.Tasks.Task.Wait()[0x00000]在< 8 96ad1d315ca4ba7b117efb8dacaedcf>:0在.CODE.Data.ItemDatabase..ctor(System.String DBPATH)[0x00028]在d:\ CODE_COPY \ EigeneProjekte \ CN_ _Xamarin ********* \ CODE \数据\ ItemDatabase.cs:22
编辑2: 如果我走在例外,我发现下面的消息定睛一看:
Don't know about XXX.CODE.Models.DetailType
这是可以理解的,因为表DetailType还没有在这一点上已经建成了。但是,我该如何通过ORM建立关系呢?是否有可能一次创建所有表格以确保关系正确并且没有表格丢失?
所有关系的注解从SQLite的-Net的Ignore
特性,以便继承sequense SQLite的-Net的内层忽略此属性它正确地由源码网的扩展处理。如果SQLite的-Net的不承认Ignore
注释可能是因为没有安装作为依赖的SQLite-网的说法相互矛盾。
TL; DR:检查您的依赖关系,并删除任何重复的SQLite,网库
根据不同的平台,它可能是更容易去除sqlite的净扩展NuGet包,简单的源复制到项目。
谢谢,这有帮助。 – Chris
使用try/catch来获得实际的异常 – Jason
这是否异常有一个原因?因为它没有说任何有用的东西 – redent84
@ redent84对不起,我迟到的答案和谢谢你试图帮助。我已更新了我的问题,请你看看?谢谢:-) – Chris