2017-04-11 1 views
1

Ich habe eine vorhandene Datenbank, auf der ich Code-First EF verwenden. Jetzt hat die Datenbank eine Tabelle mit einem zusammengesetzten Schlüssel. Ich diese Tabelle im Code definieren alsSo finden Sie Entität mit Composite-Schlüssel in Entity Framework

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;} 
    ..... 
} 

Mein Repository folgt ist

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); 
    } 
} 

Wie stelle ich/den obigen Code überschreiben Verbund zu akzeptieren Schlüssel nur bei AssessmentResultType? Damit ich

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

Antwort

2

Ändern Sie einfach eine Methode schreiben:

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