본문으로 건너뛰기

행을 찾는 방법

시트가 코드가 되는 모습으로


조회 함수는 인덱스마다 셋이 생성되고, 이름은 그 인덱스의 컬럼에서 만들어집니다.

함수없을 때
FindBy…널을 반환합니다
GetBy…OrThrow예외를 발생시킵니다
Contains…존재 여부만 확인합니다

이름이 동작을 설명하므로, 검사를 빠뜨린 자리가 코드를 읽는 것만으로 드러납니다.

첫 필드 컬럼이 기본 인덱스이고, 이름 앞에 * 를 붙이면 보조 인덱스가 하나 더 생깁니다.

테이블 Animation

[System.Serializable]
public partial class AnimationRecord
{
#region Values
/// <summary>
/// primary index
/// </summary>
public string Index => _index;

/// <summary>
/// secondary index
/// </summary>
public int Slot => _slot;

/// <summary>
/// anything
/// </summary>
public float Blend => _blend;
#endregion

#region Storage
internal string _index = "";
internal int _slot;
internal float _blend;
#endregion

#region ToString
public override string ToString()
{
var sb = new StringBuilder("{");
sb.Append("\"Index\":"); ToStringHelper.ToString(Index, sb);
sb.Append(",\"Slot\":"); ToStringHelper.ToString(Slot, sb);
sb.Append(",\"Blend\":"); ToStringHelper.ToString(Blend, sb);
sb.Append("}");
return sb.ToString();
}
#endregion
}

AnimationTable.cs

조회 함수는 레코드가 아니라 테이블에 생깁니다 — 여기 보이는 것은 멤버뿐입니다. index 가 문자열이므로 그 테이블의 조회는 문자열을 받고, *Slot 때문에 정수로 찾는 조회가 하나 더 생깁니다.


어느 컬럼 하나로도 행을 가릴 수 없을 때 선언 셀의 괄호에 키를 적습니다:table StageReward(key="Stage,Rank") 입니다.

테이블 StageReward

[System.Serializable]
public partial class StageRewardRecord
{
#region Values
/// <summary>
/// which stage
/// </summary>
public int Stage => _stage;

/// <summary>
/// finishing rank
/// </summary>
public global::Tabbit.Fixtures.DocShowcase.Rarity Rank => _rank;

/// <summary>
/// gold paid
/// </summary>
public int Gold => _gold;

/// <summary>
/// drop table
/// </summary>
public string DropTable => _dropTable;
#endregion

#region Storage
internal int _stage;
internal global::Tabbit.Fixtures.DocShowcase.Rarity _rank;
internal int _gold;
internal string _dropTable = "";
#endregion

#region ToString
public override string ToString()
{
var sb = new StringBuilder("{");
sb.Append("\"Stage\":"); ToStringHelper.ToString(Stage, sb);
sb.Append(",\"Rank\":"); ToStringHelper.ToString(Rank, sb);
sb.Append(",\"Gold\":"); ToStringHelper.ToString(Gold, sb);
sb.Append(",\"DropTable\":"); ToStringHelper.ToString(DropTable, sb);
sb.Append("}");
return sb.ToString();
}
#endregion
}

StageRewardTable.cs

키가 둘이면 조회 함수의 인자도 둘입니다 — FindByStageAndRank(stage, rank) 처럼 성분마다 하나씩 생깁니다. 이름이 그 인덱스의 컬럼에서 만들어지므로, 키를 바꾸면 함수 이름이 함께 바뀌고 옛 이름을 부르던 자리가 컴파일에서 드러납니다.