首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >实体框架代码首先使用一列作为主键,另一列作为自动增量列

实体框架代码首先使用一列作为主键,另一列作为自动增量列
EN

Stack Overflow用户
提问于 2013-01-31 04:13:55
回答 4查看 71.7K关注 0票数 29

我有一个名为Sale的类

代码语言:javascript
复制
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代码完成此操作。

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-11-11 18:37:21

显然@IronMan84的answer是正确的。但它对我不起作用。我稍微修改了一下,以应用我的另一个条件。而且它起作用了。我什么也没做。

这是我的解决方案。

代码语言:javascript
复制
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的答案正确,因为它对我不起作用。

票数 5
EN

Stack Overflow用户

发布于 2013-01-31 04:24:23

您也可以使用数据注释来执行此操作:

代码语言:javascript
复制
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; }
}
票数 46
EN

Stack Overflow用户

发布于 2013-01-31 04:21:14

我相信您可以使用Fluent API来完成此操作。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14612813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档