C# 如何实现唯一密钥的解决方案?

C# 如何实现唯一密钥的解决方案?,c#,repository-pattern,C#,Repository Pattern,我有三张桌子: Player => PlayerId (Primary Key), Name, etc Team => TeamId (Primary Key), Name, etc PlayerTeam => PlayerId, TeamId (The combination must be unique) 那么我有以下几点: public interface IEntityKey<TKey> { TKey Id { get; } }

我有三张桌子:

Player => PlayerId (Primary Key), Name, etc  
Team => TeamId (Primary Key), Name, etc  
PlayerTeam => PlayerId, TeamId (The combination must be unique)  
那么我有以下几点:

public interface IEntityKey<TKey>
{
    TKey Id { get; }    
}

public interface IRepository<TKey, TEntity> where TEntity : class, IEntityKey<TKey>
{
  IQueryable<TEntity> All();
  TEntity FindBy(Expression<Func<TEntity, bool>> expression);
  ....
  TEntity FindBy(TKey id);
}
公共接口IEntityKey
{
TKey Id{get;}
}
公共接口Iposition,其中tenty:class,IEntityKey
{
IQueryable All();
TEntity FindBy(表达式);
....
TEntity FindBy(TKey id);
}
现在,虽然上述方法对于带有单个键的表(如球员表或球队表)很有效,但我如何为我的playerteam表实现它?我需要的是一个能够满足任意数量键的解决方案。我更喜欢一个解决方案,如

public interface IEntityKey<TKey> where TKey : System.Tuple
{
    TKey Id { get; }    
}
公共接口IEntityKey,其中TKey:System.Tuple
{
TKey Id{get;}
}
结束

public interface IEntityKey<TKey1, TKey2>
{
    TKey1 Id1 { get; }    
    TKey2 Id2 { get; }    
}
公共接口IEntityKey
{
TKEY1ID1{get;}
TKey2 Id2{get;}
}

只需使用原始的
IEntityKey
界面,将
元组作为
TKey

public class PlayerTeam : IEntityKey<Tuple<int, int>>
{
    Tuple<int, int> IEntityKey<Tuple<int, int>>.Id
    {
        get { return Tuple.Create(PlayerId, TeamId); }
    }

    public int PlayerId { get; set; }
    public int TeamId { get; set; }
}
public class PlayerTeam:IEntityKey
{
元组IEntityKey.Id
{
获取{return Tuple.Create(PlayerId,TeamId);}
}
public int PlayerId{get;set;}
public int TeamId{get;set;}
}
作为旁注,在我看来,
PlayerTeam
不是一个实体,而仅仅是一个关联