I have a class named Sale
public class Sale
{
public int Id { get; set; }
public string TrNo { get; set; }
public DateTime Date
I believe you can do this using 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);
}
This helped me. Hope this helps anyone else that still looking around
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; }
}
You can also do this with Data Annotations:
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; }
}
Apparently the answer of @IronMan84 correct. But it didn't work for me. I slightly modified it to apply my another condition. And it worked. I did nothing else.
This is my solution.
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; }
}
Unfortunately I can't make the answer of @IronMan84 as the correct one as it didn't work for me.