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; }
}
データベースでは、Id
をAuto Increment
列として、TrNo
をPrimary Key
列として使用します。
最初にEF5コードを使用してこれを行う方法を教えてください。
ありがとう。
明らかに 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; }
}
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);
}
これは私を助けました。これがまだ周りを見回している他の誰にも役立つことを願っています
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; }
}