1

(現在)Android Samsung S6モバイルのデータベースで多対多のデー​​タベース関係を機能させようとしています。この目的のために、私は SQLite.Net-PCL 3.0.5 と SQLiteNetExtensions 1.3.0 を使用しています。単純な SQlite アクセスが正常に機能していましたが、(リンク テーブルを介して) 多対多の関係をセットアップしようとしました。呼び出し時に sqlite-net-extensions がスローされます。 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 パッケージが必要ですか?

4

1 に答える 1

1

つまり、これがどのように機能するのかを誤解していることと、1.3 が壊れていることの組み合わせのようです。

1.2.5 にロールバックしたところ、例外がスローされなくなりました。しかし、実際には保存されませんでした。次に、プロジェクト ソース ( https://bitbucket.org/twincoders/sqlite-net-extensionsで入手可能) に含まれているテスト ケースを調べたところ、彼が多対多くの関係。代わりに、最初のエンティティを挿入し、同じエンティティに対して UpdateWithChildren を呼び出して、リンク テーブルに入力しました。これはうまくいくようです。これが 1 つの呼び出しにまとめられない理由は不明ですが、先に進むことができます。

于 2015-11-25T09:24:12.967 に答える