【问题标题】:Entity Framework Code First: shared primary key实体框架代码优先:共享主键
【发布时间】:2011-05-05 09:02:13
【问题描述】:

我有一个现有表,其主键超过 3 列(1 个 varchar 和 2 个整数)。 我如何告诉实体框架使用这个“密钥”。 是否可以使用模型构建器、属性或其他方式?

谢谢!

【问题讨论】:

    标签: mapping ef-code-first code-first entity-framework-4.1


    【解决方案1】:

    在fluent api中你必须使用匿名类型:

    modelBuilder.Entity<YourType>()
                .HasKey(e => new 
                    {
                        e.VarChar,
                        e.Int1,
                        e.Int2
                    });
    

    其他方式是使用数据注释:

    public class YourType
    {
        [Key, Column(Order = 0)]
        public string VarChar { get; set; }
        [Key, Column(Order = 1)]
        public int Int1 { get; set; }
        [Key, Column(Order = 2)]
        public int Int2 { get; set; }
    }
    

    在这两种情况下,列的顺序都很重要。一旦您尝试使用DbSet&lt;YourType&gt;.Find,您将必须以相同的顺序提供密钥。 EF 也在内部使用 order。

    【讨论】:

      猜你喜欢
      • 2016-05-23
      • 2013-04-16
      • 2013-01-15
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      相关资源
      最近更新 更多