【问题标题】:How to find entity with composite key in Entity Framework如何在实体框架中查找具有复合键的实体
【发布时间】:2017-04-11 05:25:57
【问题描述】:

我有一个使用代码优先 EF 的现有数据库。现在数据库有一个带有复合键的表。我在代码中定义这个表如下

public class AssessmentResultType
{
    [Key]
    [Column(Order=1)]
    public int AssessmentID {get; set;}
    public int ResultType {get; set;}
    [Key]
    [Column(Order=2)]
    public int ResultTypeID {get; set;}
    .....
}

我的仓库是

 public class AssessmentResultTypeRespository : Repository<AssessmentResultType>
{
    public AssessmentResultTypeRespository(string connString)
        :base(connString)
    { }
}

Repository.cs

public class Repository<TEntity> : IRepository<TEntity> where TEntity:class
{
    protected readonly GradeXpertContext context;

    public Repository(string connString) {
        context = new ge(connString);
    }

    public TEntity Get(int id)
    {
        return context.Set<TEntity>().Find(id);
    }

    public IEnumerable<TEntity> GetAll() { 
        return context.Set<TEntity>().ToList(); 
    }

    public void Add(TEntity entity) {
        context.Set<TEntity>().Add(entity);
    }

    public void AddRange(IEnumerable<TEntity> entities) {
        context.Set<TEntity>().AddRange(entities);
    }

    public void Remove(TEntity entity) {
        context.Set<TEntity>().Remove(entity);
    }

    public void RemoveRange(IEnumerable<TEntity> entities) {
        context.Set<TEntity>().RemoveRange(entities);
    }
}

如何调整/覆盖上述代码以仅在 AssessmentResultType 的情况下接受复合键?这样我就可以写了

var art1 = repAssResultType.Get(32, 4);

【问题讨论】:

    标签: c# entity-framework composite-primary-key


    【解决方案1】:

    只需改变一种方法:

    public TEntity Get(params object[] keyValues)
    {
         return context.Set<TEntity>().Find(keyValues);
    }
    

    【讨论】:

      猜你喜欢
      • 2018-06-05
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多