web-dev-qa-db-ja.com

1つの列を主キーとして使用し、もう1つの列を自動インクリメント列として使用するエンティティフレームワークコード

Saleという名前のクラスがあります

public class Sale
{
    public int Id { get; set; }
    public string TrNo { get; set; }
    public DateTime Date { get; set; }
    public int CustomerID { get; set; }

    public ObservableCollection<SaleDetail> SaleDetails { get; set; }
}

データベースでは、IdAuto Increment列として、TrNoPrimary Key列として使用します。

最初にEF5コードを使用してこれを行う方法を教えてください。

ありがとう。

28

明らかに answer @ IronMan84が正しい。しかし、私にはうまくいきませんでした。別の条件を適用するために少し変更しました。そしてそれは働いた。私は他に何もしませんでした。

これが私の解決策です。

public class Sale
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Key, Column(TypeName = "varchar"), MaxLength(50)]
    public string TrNo { get; set; }

    public DateTime Date { get; set; }
    public int CustomerID { get; set; }

    public ObservableCollection<SaleDetail> SaleDetails { get; set; }
}

残念ながら、@ IronMan84の答えは正しいものではありません。

データ注釈を使用してこれを行うこともできます。

public class Sale
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Key]
    public string TrNo { get; set; }

    public DateTime Date { get; set; }
    public int CustomerID { get; set; }

    public ObservableCollection<SaleDetail> SaleDetails { get; set; }
}
45
IronMan84

Fluent APIを使用してこれを行うことができると信じています

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Sale>().Property(a => a.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    modelBuilder.Entity<Sale>().Property(a => a.TrNo).HasKey(b => b.TrNo);
}
17
Jake

これは私を助けました。これがまだ周りを見回している他の誰にも役立つことを願っています

public class Sale
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]//switch on autogenerated
        public int Id { get; set; }

        [Key]//set as Primary key
        [DatabaseGenerated(DatabaseGeneratedOption.None)]// switch off autogenerated PK
        public string TrNo { get; set; }

        public DateTime Date { get; set; }
        public int CustomerID { get; set; }

        public ObservableCollection<SaleDetail> SaleDetails { get; set; }
}
2
Jephren Naicker