【问题标题】:DbLinq DbMetal - "The given key was not present in the dictionary" when adding Foreign KeyDbLinq DbMetal - 添加外键时“字典中不存在给定的键”
【发布时间】:2012-10-29 07:16:29
【问题描述】:

这是我最初的 SQLite 数据库

CREATE TABLE [Categories] (
  [ParentId] INT, 
  [Name] VARCHAR(100));

CREATE TABLE [Fees] (
  [CategoryId] INT, 
  [Name] VARCHAR(100), 
  [Value] VARCHAR(50), 
  [Info] VARCHAR(200));

CREATE TABLE [Markups] (
  [CategoryId] INT, 
  [UpTo] MONEY, 
  [Value] VARCHAR(50), 
  [Info] VARCHAR(200));

如果我运行DbMetal /provider:Sqlite /conn "Data Source=bms4.db3" /dbml:Model.dbml,它将成功创建dbml文件。

但是如果我添加一个外键,那么

CREATE TABLE [Fees] (
  [CategoryId] INT CONSTRAINT [fk_fees_categories] REFERENCES [Categories]([rowid]), 
  [Name] VARCHAR(100), 
  [Value] VARCHAR(50), 
  [Info] VARCHAR(200));

运行相同的命令

DbMetal /provider:Sqlite /conn "Data Source=bms4.db3" /dbml:Model.dbml

会报这个错误:

>>> Reading schema from SQLite database
DbMetal: The given key was not present in the dictionary.

如何将外键关系引入 DBML?

【问题讨论】:

    标签: sqlite linq-to-sql dml dblinq dbmetal


    【解决方案1】:

    根据约束中的唯一键检查外键。您尚未声明主键或唯一键,因此您需要先声明(最好确保每个表都有一个主键)

    【讨论】:

    • 你说得对,我必须明确添加一个自动增量字段。为什么 ROWID 不起作用?
    猜你喜欢
    • 1970-01-01
    • 2016-08-14
    • 2012-02-18
    • 2014-12-02
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多