Entity Framework Code Сначала используется один столбец в качестве основного ключа, а другой - в качестве столбца автоматического увеличения
У меня есть класс с именем Продажа
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.
Спасибо.
Ответы
Ответ 1
По-видимому, правильный ответ у 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 правильным, поскольку он не работает для меня.
Ответ 2
Вы также можете сделать это с помощью аннотаций данных:
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; }
}
Ответ 3
Я считаю, что вы можете сделать это с помощью 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);
}
Ответ 4
Это помогло мне. Надеюсь, это поможет любому, кто все еще смотрит вокруг.
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; }
}