2012-11-09 28 views
0

時,這是我最初的SQLite數據庫的DBLinq DbMetal - 添加外鍵

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的關鍵關係?

回答

0

根據約束中的唯一鍵檢查外鍵。你還沒有聲明主鍵或唯一鍵,所以你需要從頭開始(這是一個很好的做法,以確保每個表都有一個主鍵)

+0

你說得對,我必須明確地添加一個自動增量字段。爲什麼ROWID不工作? – Aximili