【问题标题】:Add foreign key inside my C# code for Sqlite在我的 C# 代码中为 Sqlite 添加外键
【发布时间】:2019-02-03 21:19:41
【问题描述】:

我已经创建了一个 Sqlite 数据库,但是当我访问 Xamarin.forms 时,我发现我必须为我的 Sqlite 数据库中的每个表创建一个类。

我有 3 张桌子:

  1. User 3 列 UserID(PK)、Mail(唯一)、密码
  2. Ticket 4 列 TicketID (PK), Name, Description, TicketValue
  3. UserTickets 4 列 UserID (FK)、TicketID (FK)、TicketValue (FK)

在 C# 中,我可以使用主键和唯一键来处理

[PrimaryKey, Unique]

像上面这样。

但是我不知道如何设置外键。

我正在使用 Nuget Sqlite

【问题讨论】:

  • 有点不清楚你在问什么。您是否尝试在创建表查询期间设置外键?
  • 是的,通过我的 C# 数据库,我正在尝试为表 (UserTickets) 中的主键设置一个外键,它都是其他 2 个表的外键
  • Sqlite.net 没有外键支持,但你可以使用 Sqlite.net-extensions nuget.org/packages/SQLiteNetExtensions

标签: c# xamarin xamarin.forms sqlite


【解决方案1】:

听起来您正试图在 SQLite 中创建带有外键的表。如果这是正确的,这应该会有所帮助。

在创建表的 SQLite 中,您可以在查询结束时设置外键引用。例如,用户票证表创建查询如下所示。

CREATE TABLE `UserTickets` (
`UserID`    INTEGER,
`TicketID`  INTEGER,
`TicketValue`   INTEGER,
FOREIGN KEY(`UserID`) REFERENCES `User`(`UserID`)
FOREIGN KEY(`TicketID`) REFERENCES `Ticket`(`TicketID`)
FOREIGN KEY(`TicketValue`) REFERENCES `Ticket`(`TicketValue`)
);

现在,每次创建与数据库的连接时都打开外键很重要。 SQLite 不会为您执行此操作,因此如果您添加诸如“ON DELETE CASCADE”之类的外键约束,请确保在您的连接字符串中指定它

例子:

 SQLiteConnection conn = new SQLiteConnection("Data Source = [Your DB Path];foreign keys=true;");

最后一点:您需要调整表创建查询以添加任何增量或唯一约束。

【讨论】:

  • 您好,先生,我已经在 Sqlite 中完成了它,并且全部完成了,但是我得到的是将 SQLite 添加到 Xamarin.forms 项目中,我必须为数据库创建一个类并在其中创建每个表C#类
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 2013-07-15
  • 2017-07-06
  • 1970-01-01
  • 2011-09-02
  • 2016-09-25
相关资源
最近更新 更多