Показать сообщение отдельно
Непрочитано 09.02.2018, 01:05   #86
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: c# entity framework

Предметы - собственность аккаунта, один и тот же предмет может быть экипирован у нескольких персонажей. Так что Many-to-Many как раз то, что нужно. Связываешь персонажей и предметы через таблицу character_item, в случае с EF Core 2.0 придётся создать связующую сущность:

class CharacterItem
{
    public int CharacterId { get; set; }
    public Character Character { get; set; }
 
    public int ItemObjId { get; set; }
    public Item Item { get; set; }
}
 
Code: C#

class Character
{
    public ICollection<CharacterItem> CharacterItems { get; set; } 
        = new HashSet<CharacterItem>();
}
 
Code: C#

И это, ты пишешь на C#, а выглядит это всё не как C#.

Если для тебя принципиально важно, чтобы колонки таблиц были в snake_case, то незачем в самих сущностях применять такое написание. Проще в контексте задать необходимый стиль.

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Model.GetEntityTypes()
        .SelectMany(entity => entity.GetProperties())
        .ToList()
        .ForEach(prop => prop.Relational().ColumnName = prop.Name.ToSnakeCase());
}
 
Code: C#

public static string ToSnakeCase(this string value)
{
    return Regex.Replace(value,
            "(.)(?=[A-Z])",
            "$1_",
            RegexOptions.Compiled
        ).ToLower();
}
 
Code: C#
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием