Актуальнее. Я перешёл с Dapper на EF из-за связей "через пятую точку".
К примеру EF и учётная запись с персонажами:
[Table("accounts")]
public class Account : BaseEntity
{
[Key]
public long Id { get; protected set; }
public string Login { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public string Nickname { get; set; }
public virtual ICollection<Character> Characters { get; set; } = new HashSet<Character>();
// ...
}
Code: C#
[Table("characters")]
public class Character : CharacterBase
{
[Key]
public int Id { get; protected set; }
public long AccountId { get; set; }
public int CharacterBaseId { get; set; }
public CharacterClass Class { get; set; }
public int PlayedDuration { get; set; }
public virtual Account Account { get; set; }
// ...
}
Code: C#
И в контексте определяем связь:
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Entity<Character>()
.HasRequired<Account>(x => x.Account)
.WithMany(x => x.Characters)
.HasForeignKey(x => x.AccountId);
// ...
base.OnModelCreating(builder);
}
Code: C#