Alternative Unique Key Fix

Labels
AJAX(112) App Studio(7) Apple(1) Application Builder(245) Application Factory(207) ASP.NET(95) ASP.NET 3.5(45) ASP.NET Code Generator(72) ASP.NET Membership(28) Azure(18) Barcode(2) Barcodes(3) BLOB(18) Business Rules(1) Business Rules/Logic(140) BYOD(13) Caching(2) Calendar(5) Charts(29) Cloud(14) Cloud On Time(2) Cloud On Time for Windows 7(2) Code Generator(54) Collaboration(11) command line(1) Conflict Detection(1) Content Management System(12) COT Tools for Excel(26) CRUD(1) Custom Actions(1) Data Aquarium Framework(122) Data Sheet(9) Data Sources(22) Database Lookups(50) Deployment(22) Designer(177) Device(1) DotNetNuke(12) EASE(20) Email(6) Features(101) Firebird(1) Form Builder(14) Globalization and Localization(6) How To(1) Hypermedia(2) Inline Editing(1) Installation(5) JavaScript(20) Kiosk(1) Low Code(3) Mac(1) Many-To-Many(4) Maps(6) Master/Detail(36) Microservices(4) Mobile(63) Mode Builder(3) Model Builder(3) MySQL(10) Native Apps(5) News(18) OAuth(8) OAuth Scopes(1) OAuth2(11) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(10) PKCE(2) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(180) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(80) SharePoint(12) SPA(6) SQL Anywhere(3) SQL Server(26) SSO(1) Stored Procedure(4) Teamwork(15) Tips and Tricks(87) Tools for Excel(2) Touch UI(93) Transactions(5) Tutorials(183) Universal Windows Platform(3) User Interface(338) Video Tutorial(37) Web 2.0(100) Web App Generator(101) Web Application Generator(607) Web Form Builder(40) Web.Config(9) Workflow(28)
Archive
Blog
Wednesday, August 20, 2008PrintSubscribe
Alternative Unique Key Fix

Code OnTime Generator is using a collection of queries to interrogate a database schema when any code generator project involving database interaction is generated. File [My Documents]\Code OnTime\Library\_Config \CodeOnTime.ModelMap.xml defines a collection of queries that are used to discover the database metadata. Data provider System.Data.SqlClient  has an entry named PrimaryKeyColumns that was incorrectly determining the primary key columns. The query has been retrieving both primary keys and alternative unique keys. Alternative unique keys should be ignored.

Generated projects were treating fields included in the alternative unique keys as if they were the fields of the primary key.

We have replaced the query with the following:

select kcu.*
from information_schema.key_column_usage kcu 
    inner join information_schema.table_constraints tc on
        kcu.constraint_catalog = tc.constraint_catalog and
        kcu.constraint_schema = tc.constraint_schema and
        kcu.constraint_name = tc.constraint_name 
where 
    tc.constraint_type = 'PRIMARY KEY'

The fix has been deployed. Simply start CodeOnTime.exe and you will be prompted to download the update.

If you do have a database table with any fields included in a UNIQUE INDEX then open you project and proceed to the Database Connection section of your project. There is a link "Click here if your database has changed and you would like to refresh the cached metadata." Click on the link to reset the metadata and generate the project again. The problem will go away.