1

基本的に、次のようなClientクラスとクラスがありますAddress

public class Client
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    public string Description{ get; set; }
    public string Email { get; set; }
    public string Website { get; set; }
    public string PhoneNumber { get; set; }

    [ForeignKey(typeof(Address))]
    public int AddressId { get; set;}
    [OneToOne(CascadeOperations = CascadeOperation.All)]
    public Address Address { get; set; }
}

public class Address
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    public string Line1 {get;set;}
    public string Line2 {get;set;}
    public string Line3 {get;set;}
    public string Line4 {get;set;}
    public string Line5 {get;set;}
    public string Line6 {get;set;}
}

私はnugetパッケージSQLite.Net-PCLをSQLite.Net-PCL Extensionsと組み合わせて使用​​しているため、基本的にInsertを呼び出してClientオブジェクトを渡し、クライアントをアドレスとともにデータベースに保存できます。このような:

_db.InsertWithChildren(clientObject);

私のアプリケーション (MvvmCross を使用した Xamarin.iOS) では、既存のデータベースをアプリケーションにバンドルしているため、コードでテーブルを作成しないので、私の障害点はInsertWithChildren(clientObject)呼び出しにあります。

既存のテーブルを削除してから、コードでテーブルを作成しようとしましたが、Address最初にテーブルを作成してからクライアントテーブルを作成すると、タイプ/プロパティClientについて「知らない」と表示されます。最初にテーブルAddressを試すと、同じエラーが発生します。Clientクライアントとアドレスを1回の呼び出しで保存するために、できるだけ多くのバリエーションを試しましたが、役に立ちませんでした。

誰でもこれに光を当てることができますか?

4

1 に答える 1

1

すべての関係属性が SQLite-NetIgnore属性から継承されるため、問題が発生します。別のバージョンの SQLite-Net を使用すると、Ignore属性が認識されず、注釈付きのプロパティを保持しようとするため、表示されているエラーでクラッシュします。

簡単に言うと、おそらく、ある SQLite-Net 拡張機能の注釈と、他の SQLite-Net バージョンのデータベース接続を使用しているでしょう。

SQLite-Net MvvmCross Community エディションを使用している場合は、PCL ではなく、SQLite-Net Extensions MvvmCross NuGet パッケージを使用する必要があります。

于 2014-11-06T18:35:27.697 に答える