2010-12-13 105 views
1

我在讀取數據庫中的列約束。
例如:
解析SQL檢查約束

(substring([name],(1),(1))='P' OR len([name])>(2) AND len([name])>(4) AMD (len(name)>5 OR len(name)<4)) 

的想法是,每一個打開的支架必須關閉。
當我們添加新的檢查約束時,SQL管理工作室會自動插入數字和函數週圍的括號。 任何人都可以建議如何解析這些字符串?

我的目標是將Column Check Constraints轉換爲C#代碼,以便構建實體驗證器。所有數據庫表都映射到實體類。

回答

2

簡單的答案:這並不容易。至少不是如果你想做正確的...

你在談論定義一個DSL定義約束(這是「巧合」就像TSQL)。恕我直言,你需要使用某種解析器工具才能做到這一點。也許你應該考慮使用Irony

雖然這是一個有趣的想法。我可以看到它的優點 - 我不認爲它比簡單地使用數據庫作爲數據存儲庫(沒有任何數據驗證 - 可能只有外鍵約束)更容易,並且專注於將所有業務規則定義到.NET服務器端...