OKどのように見えるかです
public class Contact
{
public int Id { get; set; }
// This needs to be auto generated
public Int32 ContactIndex { get; set; }
public string FullName { get; set; }
public string Email { get; set; }
public DateTime LastAccessed { get; set; }
}
です私はまだモデル上の注釈なしでそれを行う方法を理解できません。だからここに私のソリューションです。
あなたが
public class Contact
{
public int Id { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Int32 ContactIndex { get; set; }
public string FullName { get; set; }
public string Email { get; set; }
public DateTime LastAccessed { get; set; }
}
を、以下のようなあなたがモデルに提出された注釈を付けるとあなたのコンテキストクラスでOnModelCreatingを追加する必要があります。これにより、エンティティフレームワークはレコードの追加または更新中に列を無視するようになります。 .ValueGeneratedAddOrUpdate()メソッドを呼び出していることを確認してください。 .ValueGeneratedAdd()のみを使用すると、更新中にエラーが発生します。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Contact>()
.Property(c => c.ContactIndex)
.ValueGeneratedOnAddOrUpdate();
;
}
「SqlServerValueGenerationStrategy.IdentityColumnは」
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<int>(
name: "ContactIndex",
table: "Contact",
nullable: false,
defaultValue: 0)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
}
あなたが移行を使用するか、または既存のテーブルにマップしようとしています含める必要があり、あなたの移行や、あなたの移行を生成し、実行しますか?そして、2つのアイデンティティ列 'Id'と' ContactIndex'が必要ですか? –
私は移行を使用して新しい列 "ContactIndex"を追加しました。テーブルの主キーはGUIDです。この列 "ContactIndex"は数字の列ですが、番号を自動生成する必要があります。 – ATHER