"-6ren"> "-我在我的 xamarin.forms 应用程序中使用 sqlite 网络扩展库。我在 PCL 中编写数据库代码和模型。 当我调用 SQLiteConnection.CreateTable() 时,出现-6ren">
gpt4 book ai didi

c# - ManyToOne 关系上的 Xamarin.Forms Sqlite-net NotSupportedException "Don' 不了解 "

转载 作者:行者123 更新时间:2023-12-02 02:45:40 25 4
gpt4 key购买 nike

我在我的 xamarin.forms 应用程序中使用 sqlite 网络扩展库。我在 PCL 中编写数据库代码和模型。

当我调用 SQLiteConnection.CreateTable() 时,出现错误System.NotSupportedException:不了解 Cigars.Models.Cigar

Smoke 是 Cigar 的子对象,它具有 ManyToOne 关系。以下是型号:

烟雾

public class Smoke
{

[PrimaryKey]
public int SmokeId { get; set; }

[ForeignKey(typeof(Cigar))]
public int CigarId { get; set; }

public string Notes { get; set; }

public DateTime DateCreated { get; set; }

//why is this not recognized?
[ManyToOne]
public Cigar Cigar { get; set; }

}

雪茄

public class Cigar
{

[PrimaryKey]
public int CigarId { get; set; }

public string Name { get; set; }

public double Length { get; set; }
}

导致抛出异常的数据库调用:

private SQLiteConnection db;

public Database(string path)
{
db = new SQLiteConnection(path);
db.CreateTable<Cigar>();
db.CreateTable<Smoke>(); //this throws the error
}

最佳答案

问题是我为 sqlite 安装了两个不同的库,两者都包含 SQLiteConnection

我需要使用Sqlite.Net.SQLiteConnection类来进行sqlite网络扩展。不是我使用的 Sqlite.SQLiteConnection

正如 SushiHangover 所指出的,这个 Sqlite.Net.SQLiteConnection 采用 ISQLitePlatform 类型的第一个参数。

为了获得对此的引用,我定义了一个接口(interface),该接口(interface)提供了返回 ISQLitePlatform 的方法签名:

public interface ISQLitePlatformInstance
{
ISQLitePlatform GetSQLitePlatformInstance();
}

我在我的 Droid 项目(我正在构建的平台)中实现了该界面:

public class SQLitePlatformInstance : ISQLitePlatformInstance
{

public ISQLitePlatform GetSQLitePlatformInstance()
{
return new SQLitePlatformAndroid();
}

}

关于c# - ManyToOne 关系上的 Xamarin.Forms Sqlite-net NotSupportedException "Don' 不了解 <model>",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41668282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com