首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sqlite.net不创建Sqlite.net扩展的属性

Sqlite.net不创建Sqlite.net扩展的属性
EN

Stack Overflow用户
提问于 2015-03-12 17:18:40
回答 1查看 170关注 0票数 0

我的问题是,如果我想创建两个在这两个表之间具有[OneToMany]关系的表。

代码语言:javascript
复制
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的另一个派生类

致以最好的问候,托马斯

EN

回答 1

Stack Overflow用户

发布于 2015-06-20 00:40:56

您不需要在外部ket中使用ManyToOne属性,只有当您想要加载反向关系时才会使用它,即Order对象。

替换为:

代码语言:javascript
复制
[ForeignKey(typeof(Order)), ManyToOne]
public Guid OrderId{ get; set; }

有了这个:

代码语言:javascript
复制
[ForeignKey(typeof(Order))]
public Guid OrderId{ get; set; }

另外,我不认为Sqlite支持Guids (否则它会被当作文本处理,性能会很差),试着使用int和AutoIncrement。

除此之外,它看起来很好。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29005786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档