title: Difference between Primary Key and Unique Index in SQL Server
body: <p>My company is currently in the process of rewriting an application that we recently acquired.  We chose to use ASP.net mvc4 to build this system as well as using the Entity Framework as our ORM.  The previous owner of the company we acquired is very adamant that we use their old database and not change anything about it so that clients can use our product concurrently with the old system while we are developing the different modules.  </p>
  
  <p>I found out that the old table structures does not have a Primary key, rather, it uses a Unique Index to serve as their primary key.  Now when using Entity framework I have tried to match their tables in structure but have been unable to do so as the EF generates a Primary key instead of a unique index.  </p>
  
  <p>When I contacted the previous owner, and explained it, he told me that "the Unique key in every table is the Primary Key. They are synonyms to each other."</p>
  
  <p>I am still relatively new to database systems so I am not sure if this is correct.  Can anyone clarify this?</p>
  
  <p>his table when dumped to SQL generates:</p>
  
  <pre><code>-- ----------------------------
  -- Indexes structure for table AT_APSRANCD
  -- ----------------------------
  CREATE UNIQUE INDEX [ac_key] ON [dbo].[AT_APSRANCD]
  ([AC_Analysis_category] ASC, [AC_ANALYSI_CODE] ASC) 
  WITH (IGNORE_DUP_KEY = ON)
  GO
  </code></pre>
  
  <p>however my system generates:</p>
  
  <pre><code>-- ----------------------------
  -- Primary Key structure for table AT_APSRANCD
  -- ----------------------------
  ALTER TABLE [dbo].[AT_APSRANCD] ADD PRIMARY KEY ([AC_Analysis_category])
  GO
  </code></pre>
  
  <p><strong>EDIT:</strong>
  Follow up question to this is how would I go about designing the Models for this?  I am only used to using the [Key] annotation which defines it as a primary key, and without it, EF will not generate that table.
  so something like this:</p>
  
  <pre><code>[Table("AT_APSRANCD")]
  public class Analysis
  {
      [Key]
      public string AnalysisCode { get; set; }
      public string AnalysisCategory { get; set; }
      public string ShortName { get; set; }
      public string LongName { get; set; }
  }
  </code></pre>