Sqlite.net不会创建Sqlite.net Extension的属性

时间:2015-03-12 09:18:40

标签: sqlite xamarin sqlite-net-extensions sqlite.net

我的问题是,如果我想在这两个表之间创建两个[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的派生类吗?

最诚挚的问候, 托马斯

1 个答案:

答案 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。

否则它看起来很好。

参考:https://bitbucket.org/twincoders/sqlite-net-extensions