Chr*_*ice 5 c# sqlite entity-framework entity-framework-core
我有一个带有 EF Core 2.0.1 的 xamarin 应用程序,并且遇到了一个奇怪的问题,即外键在我的 SQLite 数据库中行为不正常。
看起来外键可以保存,但是当我恢复实体时,外键属性将始终为空。我检查了 SQLLIte 数据库文件,它在表上有一个外键约束,并且启用了 PRAGMA。
我在这里做错了什么?
我的模型带钥匙
/// <summary>
/// The id of the form template
/// </summary>
public int TemplateId { get; set; }
/// <summary>
/// Link to the template
/// </summary>
[ForeignKey("TemplateId")]
public virtual FormTemplate FormTemplate { get; set; }
Run Code Online (Sandbox Code Playgroud)
映射的模型
/// <summary>
/// Identifier for the form template.
/// This comes from the API.
/// </summary>
[Key]
public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的数据上下文初始值设定项
/// <summary>
/// Constructor
/// </summary>
public DatabaseContext(string databaseFilePath)
{
DatabaseFilePath = databaseFilePath;
Database.EnsureCreated(); // Use this in testing so that we don't have to make migrations on every db change
Database.ExecuteSqlCommand("PRAGMA foreign_keys = ON");
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite($"Filename={DatabaseFilePath}");
}
Run Code Online (Sandbox Code Playgroud)
这是查看数据库时创建的 SQL 模式
CREATE TABLE `FormsMessages` (
`Id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`TemplateId` INTEGER NOT NULL,
CONSTRAINT `FK_FormsMessages_FormTemplates_TemplateId` FOREIGN KEY(`TemplateId`) REFERENCES `FormTemplates`(`Id`) ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)
看来 SQL BD 受到 EF 模型的约束。然而,当我尝试浏览导航属性时,即使我将其保存为 ,它FormTemplate也总是如此。(顺便说一句,当我这样做时,数据库资源管理器显示 templateId 已被填充。)nullFormTemplate = myinstance
| 归档时间: |
|
| 查看次数: |
3046 次 |
| 最近记录: |