方法';SQLiteConnection.InsertAll';找不到

本文关键字:找不到 InsertAll SQLiteConnection 方法 | 更新日期: 2023-09-27 18:23:35

我正试图在(目前)安卓三星S6手机上的数据库中建立多对多的数据库关系。为此,我使用了SQLite.Net-PCL 3.0.5和SQLiteNetExtensions 1.3.0。我曾经让简单的SQlite访问运行良好,但现在我尝试建立一个多对多关系(通过链接表),当我调用m_DatabaseConnection.UpdateWithChildren(article);

例外情况是:

System.MissingMethodException: Method 'SQLiteConnection.InsertAll' not found.

这很奇怪,因为我分解了dll并确定它确实存在。我的数据类的结构是:

public class Article : BaseModel
{
    public Article()
    {
        Audience = new List<Tag>();
        Content = new List<Tag>();
        Weather = new List<Tag>();
    }
    ...   
    [ManyToMany(typeof(ArticleTag))]
    public List<Tag> Audience { get; set; }
    [ManyToMany(typeof(ArticleTag))]
    public List<Tag> Content { get; set; }
    [ManyToMany(typeof(ArticleTag))]
    public List<Tag> Weather { get; set; }
   ....
}
    public class ArticleTag
{
    [ForeignKey(typeof(Article))]
    public int ArticleID { get; set; }
    [ForeignKey(typeof(Tag))]
    public int TagID { get; set; }
}
public class Tag : BaseModel
{
    ...
}
public class BaseModel
{
    public BaseModel()
    {
    }
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }
    public bool Dirty { get; set; }
}

那么我做错了什么?我需要包括不同版本的SQLite.Net-PCL吗?我尝试下载并编译扩展项目,但似乎有错误(我不得不卸载iOS项目,因为我没有iOS许可证,但其他项目应该已经编译)。

有什么想法吗?

--更新---

似乎有问题的行必须在"WriteOperations.cs":内

private static void UpdateManyToManyForeignKeys(this SQLiteConnection conn, object element, PropertyInfo relationshipProperty)
    {
...
    conn.InsertAll(missingIntermediateObjects);
    ..
    }

然后转到SQLiteExtensions MvvmCross,并且必须找不到接口的实现。所以,问题是,我需要其他NuGet包吗?

方法';SQLiteConnection.InsertAll';找不到

所以,看起来这是误解了它的工作原理,以及1.3被破坏的结果。

我回滚到1.2.5,它停止抛出异常。但实际上并没有保存。然后,我查看了项目源中包含的测试用例(可在此处获得:https://bitbucket.org/twincoders/sqlite-net-extensions),并看到他没有直接挽救一段多对多的关系。相反,他插入了初始实体,然后对相同的实体调用UpdateWithChildren来填充链接表。这似乎奏效了。我不清楚为什么这没有合并到一个调用中,但它允许我继续前进。