私の会社は現在、最近取得したアプリケーションを書き直している最中です。ASP.net mvc4 を使用してこのシステムを構築し、エンティティ フレームワークを ORM として使用することにしました。私たちが買収した会社の前の所有者は、私たちが古いデータベースを使用し、それについて何も変更しないことを非常に強く主張しています。これにより、私たちがさまざまなモジュールを開発している間、クライアントは古いシステムと同時に私たちの製品を使用できます.
古いテーブル構造には主キーがなく、一意のインデックスを使用して主キーとして機能することがわかりました。エンティティ フレームワークを使用する場合、テーブルの構造を一致させようとしましたが、EF が一意のインデックスではなく主キーを生成するため、一致させることができませんでした。
以前の所有者に連絡して説明したところ、「すべてのテーブルの一意のキーは主キーです。それらは互いに同義語です」とのことでした。
私はまだデータベースシステムに比較的慣れていないので、これが正しいかどうかわかりません。誰でもこれを明確にできますか?
彼のテーブルを SQL にダンプすると、次のように生成されます。
-- ----------------------------
-- 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
ただし、私のシステムは次を生成します:
-- ----------------------------
-- Primary Key structure for table AT_APSRANCD
-- ----------------------------
ALTER TABLE [dbo].[AT_APSRANCD] ADD PRIMARY KEY ([AC_Analysis_category])
GO
編集: これに対するフォローアップの質問は、このためにモデルを設計するにはどうすればよいですか? 私は主キーとして定義する [Key] 注釈の使用に慣れているだけで、それがなければ EF はそのテーブルを生成しません。このようなもの:
[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; }
}