J'ai une classe nommée 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; }
}
Et dans la base de données, je veux le Id
comme Auto Increment
colonne et TrNo
comme Primary Key
colonne.
Veuillez me dire comment procéder en utilisant le code EF5 en premier.
Merci.
Apparemment, le réponse de @ IronMan84 correct. Mais ça n'a pas marché pour moi. Je l'ai légèrement modifié pour appliquer ma autre condition. Et ça a marché. Je n'ai rien fait d'autre.
C'est ma 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; }
}
Malheureusement, je ne peux pas faire la réponse de @ IronMan84 comme la bonne car cela n'a pas fonctionné pour moi.
Vous pouvez également le faire avec les annotations de données:
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; }
}
Je pense que vous pouvez le faire en utilisant l'API Fluent
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);
}
Cela m'a aidé. J'espère que cela aide quelqu'un d'autre qui regarde toujours autour
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; }
}