Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 方法';SQLiteConnection.InsertAll';找不到_C#_Android_Xamarin_Xamarin.forms_Sqlite Net Extensions - Fatal编程技术网

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

C# 方法';SQLiteConnection.InsertAll';找不到,c#,android,xamarin,xamarin.forms,sqlite-net-extensions,C#,Android,Xamarin,Xamarin.forms,Sqlite Net Extensions,我正在尝试让多对多数据库关系在(目前)安卓三星S6手机上的数据库中工作。为此,我使用SQLite.Net-pcl3.0.5和SQLiteNetExtensions 1.3.0。 我曾经有过简单的SQlite访问,但现在我尝试设置一个多对多关系(通过一个链接表),SQlite网络扩展在我调用时抛出 m_DatabaseConnection.UpdateWithChildren(文章) 例外情况是: 这很奇怪,因为我反汇编了dll并确定它确实存在。我的数据类的结构是: public class Ar

我正在尝试让多对多数据库关系在(目前)安卓三星S6手机上的数据库中工作。为此,我使用SQLite.Net-pcl3.0.5和SQLiteNetExtensions 1.3.0。 我曾经有过简单的SQlite访问,但现在我尝试设置一个多对多关系(通过一个链接表),SQlite网络扩展在我调用时抛出
m_DatabaseConnection.UpdateWithChildren(文章)

例外情况是:

这很奇怪,因为我反汇编了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; }
}

然后转到SQLiteExtensions MvvmCross,并且一定无法找到接口的实现。所以,问题是,我还需要其他NuGet软件包吗?

所以,看起来这是一种误解,以及1.3被破坏

我回滚到1.2.5,它停止抛出异常。但实际上并没有储蓄。然后,我查看了项目源代码中包含的测试用例(可在此处找到:),发现他没有直接保存多对多关系。相反,他插入了初始实体,然后调用相同实体上的UpdateWithChildren来填充链接表。这似乎奏效了。我不清楚为什么这不是一个电话,但它允许我继续前进

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; }
}
private static void UpdateManyToManyForeignKeys(this SQLiteConnection conn, object element, PropertyInfo relationshipProperty)
    {
...

    conn.InsertAll(missingIntermediateObjects);

    ..
    }