0

我的问题是,如果我想创建两个具有这[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吗?

最好的问候,托马斯

4

1 回答 1

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

于 2015-06-19T16:40:56.323 回答