10

私は WinRT アプリに取り組んでいます。、sqlite-net-extensionsをサポートするために使用したい。OneToManyManyToMany

using SQLiteNetExtensions.Attributes;
using SQLite;

[Table("WorkFlow")]
public class Workflow
{
    [PrimaryKey, AutoIncrement]
    public int WorkflowId { get; set; }
    public string Name { get; set; }
    public int Revision { get; set; }
    [OneToMany]
    public List<Step> Steps { get; set; }
}

[Table("Step")]
public class Step
{
    public string Type { get; set; }
    public string Description { get; set; }
    [ManyToOne]
    public Workflow Workflow { get; set; }
}

データベースのテーブルを生成しようとすると、例外が発生します。

タイプ 'System.NotSupportedException' の例外が app_name.exe で発生しましたが、ユーザー コードで処理されませんでした追加情報: System.Collections.Generic.List`1 [app_name.Model.modelName] について不明です

これは から来ていSqlTypeますSQLite.cs

しかし、sqlite-net-extensions ホームページの例から、Listプロパティは正常に動作するはずです。

これは彼らの例のコピーです:

public class Stock
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    [MaxLength(8)]
    public string Symbol { get; set; }

    [OneToMany]      // One to many relationship with Valuation
    public List<Valuation> Valuations { get; set; }
}

public class Valuation
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }

    [ForeignKey(typeof(Stock))]     // Specify the foreign key
    public int StockId { get; set; }
    public DateTime Time { get; set; }
    public decimal Price { get; set; }

    [ManyToOne]      // Many to one relationship with Stock
    public Stock Stock { get; set; }
}

この問題を解決するための提案を誰かに教えてもらえますか? ありがとう。

4

3 に答える 3

9

これは通常、SQLite-Net 拡張機能が SQLite-Net ライブラリを使用してコンパイルされているが、別のライブラリを使用してアプリを実行しているために発生するインストールの問題です。PCL NuGetパッケージをプロジェクトに追加してみるか、Git からソースをダウンロードしてプロジェクトを直接参照することができます。

于 2014-08-01T16:20:07.817 に答える
3

Table ( Step ) に主キー外部キーを参照するTable ( WorkFlow )を与えてみてください

[Table("Step")]
public class Step
{
    [PrimaryKey, AutoIncrement]
    public int StepId { get; set; }
    [ForeignKey(typeof(WorkFlow))]
    public int WorkFlowId { get; set; }
    public string Type { get; set; }
    public string Description { get; set; }
    [ManyToOne]
    public Workflow Workflow { get; set; }
}
于 2014-05-23T09:52:41.963 に答える
0

修正: すべてのプロジェクトから SQLite NuGet パッケージへのすべての参照をアンインストールします。私の場合、これは Xamarin.Forms ソリューションでした。追加の予防措置としてソリューションをクリーンアップします (削除をブロックするファイル アクセスの問題がある場合に備えて、packages フォルダーからパッケージがアンインストールされていることを確認することもできます)。SQLiteNetExtensions (sqlite-net-pcl ではない) を検索し、Visual Studio で [プレリリースを含める] オプションが選択されていることを確認して、再度インストールします (2017 でテスト済み)。これにより、最小の依存関係として sqlite-net-pcl v1.2.0 と「Raw」という単語を含むいくつかのファイルがインストールされます。この時点で、'Don't know about System.Collections.Generic.List`1' エラーを確認するためにテストできます。私の場合、これがなくなりました。これで、sqlite-net-pcl を最新バージョン (執筆時点では v1.3.3) に安全に更新できるはずです。

背景: 次の組み合わせで同じ問題が発生しました。

  1. sqlite-net-pcl v1.3.3
  2. SQLiteNetExtensions v2.0.0-alpha2

私の最初の試みでは、最初に NuGet を介して sqlite-net-pcl をインストールし、次に SQLiteNetExtensions の最新の安定バージョンをインストールしました。拡張機能が sqlite-net-pcl と互換性がないことを発見した後、最新のプレリリース バージョンに更新しました。私は同じ「System.Collections.Generic.List`1 について知らない」というバグに遭遇し、非常に混乱したため、最初に他のことを試してみて、間違いを犯したかどうか疑問に思いました。プロジェクトのクリーニング、(フォルダーからの) パッケージの削除、および復元はうまくいきませんでした。パッケージの構成を確認しませんでしたが、NuGet マネージャーを使用してテスト プロジェクトと比較すると、すべて同じでした。私の修正に記載されているようにすべてをアンインストールし、SQLiteNetExtensions に依存関係のチェックを行わせると、問題が解決しました。

PSその日の早い段階で、NuGetは、通常の方法でインストールされたファイルサイズが0KBの新しいXamarin.Formsプロジェクト用の2つのパッケージをダウンロードし、別のプロジェクトからそれらをコピーする必要がありました。通常、NuGet 関連の問題は発生しません。

于 2017-07-21T10:32:00.783 に答える