我的问题是,如果我想在这两个表之间创建两个[OneToMany]
关系的表。
public class Order : BusinessEntity
{
[PrimaryKey]
public Guid Id{ get; set; }
[MaxLength(20)]
public string Title{ get; set;}
[MaxLength(20)]
public string Location{ get; set; }
public DateTime OrderGenerated{ get; set; }
[OneToMany(CascadeOperations=CascadeOperation.All)]
public List<OrderPos> Positions{ get; set; }
}
[Table("OrderPos")]
public class OrderPos : BusinessEntity
{
[PrimaryKey]
public Guid Id{ get; set; }
[ForeignKey(typeof(Order)), ManyToOne]
public Guid OrderId{ get; set; }
[MaxLength(20)]
public string MaterialNr{ get; set; }
[MaxLength(10)]
public string State{ get; set; }
public int Amount{ get; set; }
}
表OrderPos是在没有外键的情况下创建的,所以我在InsertOrUpdateAllWithChildren
方法中得到了一个例外。
我应该使用另一个SqliteConnection
的派生类吗?
最诚挚的问候, 托马斯
答案 0 :(得分:1)
您不需要外部字符串中的ManyToOne
属性,如果要加载反向关系(即Order对象),则只能使用此属性。
替换它:
[ForeignKey(typeof(Order)), ManyToOne]
public Guid OrderId{ get; set; }
有了这个:
[ForeignKey(typeof(Order))]
public Guid OrderId{ get; set; }
另外我不认为Sqlite支持Guids(或者它会视为文本和性能会很糟糕),尝试使用int和AutoIncrement。
否则它看起来很好。