C# 实体框架组合主键-如何获取列的顺序

C# 实体框架组合主键-如何获取列的顺序,c#,entity-framework-5,entity-framework-6,C#,Entity Framework 5,Entity Framework 6,我有一个使用Fluent API配置的实体。请注意属性上的HasColumnOrder public class SomeEntityMap : EntityTypeConfiguration<SomeEntity> { public SomeEntityMap () { // Primary Key this.HasKey(t => new { t.Id, t.BarId }); this.ToTable("S

我有一个使用Fluent API配置的实体。请注意属性上的HasColumnOrder

public class SomeEntityMap : EntityTypeConfiguration<SomeEntity>
{
    public SomeEntityMap ()
    {
        // Primary Key
        this.HasKey(t => new { t.Id, t.BarId });

        this.ToTable("SomeEntity", "Foo");
        this.Property(t => t.Id).HasColumnName("Id").HasColumnOrder(0);
        this.Property(t => t.BarId).HasColumnName("BarId").HasColumnOrder(1);

        // additional properties removed for brevity
    }
}
公共类SomeEntityMap:EntityTypeConfiguration
{
公共SomeEntityMap()
{
//主键
this.HasKey(t=>new{t.Id,t.BarId});
这个.ToTable(“SomeEntity”,“Foo”);
this.Property(t=>t.Id).HasColumnName(“Id”).HasColumnOrder(0);
this.Property(t=>t.BarId).HasColumnName(“BarId”).HasColumnOrder(1);
//为简洁起见,删除了其他属性
}
}
作为通用方法的一部分,我希望能够找到实体的键,以便使用

DbSet().Find()

我需要按正确的顺序将主键值传递给它

我可以从ObjectContext获取键名,但看不到从何处获取顺序。有人能帮忙吗?

试试这个:

   var adapter = (IObjectContextAdapter)db;
   var objectContext = adapter.ObjectContext;
   var objectSet = objectContext.CreateObjectSet<SomeEntity>();
   var entitySet = objectSet.EntitySet;
   var keyNames = entitySet.ElementType.KeyMembers             
                 .Select(e => e.Name).ToList();

不需要像这样添加代码

// Primary Key
this.HasKey(t => new { t.Id, t.BarId });
唯一用户

// Primary Key
this.HasKey(t =>t.Id );

这是否按照密钥添加到主键的顺序提供密钥?是的。查看本文,它将帮助您更好地了解如何使用此代码:
// Primary Key
this.HasKey(t =>t.Id );