Пользовательское соглашение об именовании ссылок в ormlite - PullRequest
2 голосов
/ 30 марта 2019

Есть ли способ изменить значение по умолчанию {PropertyReference} Id соглашение об именах для ссылок и внешних ключей?

Например, я хочу сделать это:

public class Customer
{
    [References(typeof(CustomerAddress))]
    public int Id_PrimaryAddress { get; set; } // with a prefix

    [Reference]
    public CustomerAddress PrimaryAddress { get; set; }
}

вместо этого:

public class Customer
{
    [References(typeof(CustomerAddress))]
    public int PrimaryAddressId { get; set; } // standard

    [Reference]
    public CustomerAddress PrimaryAddress { get; set; }
}

Спасибо

1 Ответ

1 голос
/ 30 марта 2019

Вы не можете изменить кодовое соглашение Ссылочные условные обозначения OrmLite глобально, но вы можете использовать [Alias("DbColumnName")], чтобы отобразить его в другой базовый столбец таблицы RDBMS.

Переопределение соглашений с атрибутами

Вы также можете использовать Внешний ключ и атрибуты ссылок в качестве примера для переопределения соглашений, например, Вы можете играть с этим Живым Примером на Gistlyn :

public class CustomerAddress 
{
    [AutoIncrement]
    public int Id { get; set; }
    public string Address { get; set; }
    public string Country { get; set; }
}

public class Customer
{
    [AutoIncrement]
    public int Id { get; set; }
    public string Name { get; set; }

    [References(typeof(CustomerAddress))]
    public int Id_PrimaryAddress { get; set; } // with a prefix

    [Reference]
    public CustomerAddress PrimaryAddress { get; set; }
}

db.CreateTable<Customer>();
db.CreateTable<CustomerAddress>();

var customer = new Customer
{
    Name = "The Customer",
    PrimaryAddress = new CustomerAddress {
        Address = "1 Home Street",
        Country = "US"
    },
};

db.Save(customer, references:true);

Где вы можете загрузить его и его ссылки и просмотреть с помощью:

var c = db.LoadSelect<Customer>(x => x.Name == "The Customer");

c.PrintDump();

Который выдаст:

[
    {
        Id: 1,
        Name: The Customer,
        Id_PrimaryAddress: 1,
        PrimaryAddress: 
        {
            Id: 1,
            Address: 1 Home Street,
            Country: US
        }
    }
]
...