Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Point Blank (Piercing Blow) (https://forum.zone-game.info/forumdisplay.php?f=204)
-   -   [Piercing Blow] Dapper Update (https://forum.zone-game.info/showthread.php?t=41967)

Boris2105 12.01.2017 22:29

Re: Dapper Update
 
Нет , просто я хотел сначала написать для одного оружия , чтобы понять как использовать этот метод.
Но думаю переписать все под CRUD

PROGRAMMATOR 12.01.2017 22:48

Re: Dapper Update
 
Ну раз попробовать, то сойдёт. :)
Но всё же попробуй Entity Framework.

Boris2105 12.01.2017 22:56

Re: Dapper Update
 
А он лучше или просто проще для освоения ?

PROGRAMMATOR 13.01.2017 00:26

Re: Dapper Update
 
Актуальнее. Я перешёл с 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#

Boris2105 13.01.2017 13:41

Re: Dapper Update
 
То есть от Cached'a можно избавляться?

PROGRAMMATOR 13.01.2017 15:36

Re: Dapper Update
 
А для чего тебе ранее требовался "Cached"?
WCF и ORM так-то не одно и тоже.

Boris2105 27.07.2017 08:32

Re: Dapper Update
 
 
public Character GetUpdate(int weapon_primary, int id)
        {
            try
            {
                using (var connection = Factory.conn)
                {
                    string updateQuery = @"UPDATE `character` SET `WEAPON_PRIMARY` = @weapon_primary WHERE `ID` IN(@id)";
                    var update = connection.Execute(updateQuery, new { WEAPON_PRIMARY = weapon_primary, ID = id });
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.ToString());
            }
            return null;
        }
 
Code: C#
 
[ServiceContract]
    public interface ICharacterDao
    {
        [OperationContract]
        Character GetCharacter(int accountId);
        [OperationContract]
        Character GetUpdate(int weapon_primary, int id);
    }
 
Code: C#
PROTOCOL_CHAR_CHANGE_EQUIP_REQ:
Свернуть ↑Развернуть ↓


Как задействовать в пакете чтобы он меня значение не только в игре но и в бд.

PROGRAMMATOR 30.07.2017 15:59

Re: Dapper Update
 
Для чего при смене эквипа создаётся новый экземпляр объекта Character? Ведь эквип меняется именно для выбранных персонажей.

int Unk = ReadShort();
Code: C#

Просто нужно разобраться с данными которые приходят от клиента. Например в этом месте количество затронутых персонажей (1 байт). А второй байт это индекс персонажа.

Necroz-Team 30.07.2017 17:21

Re: Dapper Update
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 427169)
Для чего при смене эквипа создаётся новый экземпляр объекта Character? Ведь эквип меняется именно для выбранных персонажей.

int Unk = ReadShort();
Code: C#

Просто нужно разобраться с данными которые приходят от клиента. Например в этом месте количество затронутых персонажей (1 байт). А второй байт это индекс персонажа.

А он и не создает, возвращает нулл ведь :Ъ Он наверное не понимает что нужно в интерфейсе объявить войд, непонятно зачем там модель чара)
upd: увидел, в самом пакете создает, ТС-у: var character = Client.Character(укажи где у тебя чар размещен, наобум ткнул), т.е создай ссылку на уже существующего чара.

Boris2105 30.07.2017 17:44

Re: Dapper Update
 
Да я вообще не понимаю как работать с бд на сервере.

Может хотя бы примерно кто то показать как реализовать например чтобы обновлялся weapon_primary.
Мне бы хотя бы сам принцип понять , а то догнать не могу.


Текущее время: 03:38. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot