SQLiteNetExtensions несколько связей ManyToOne одного типа - PullRequest
0 голосов
/ 27 февраля 2019

Я пробую приложение xamarin ... и мне нужна база данных sqlite ... которая содержит 3 таблицы ... пользователей, учетные записи и транзакции ... таблица счетов выглядит так:

[Table(nameof(Account))]
class Account
{
    [PrimaryKey,AutoIncrement]
    public int Id { get; set; }

    public string Name { get; set; }

    [ForeignKey(typeof(User))]
    public int UserId { get; set; }

    public double Balance { get; set; }

    [ManyToOne]
    public User User { get; set; }

    [OneToMany(CascadeOperations = CascadeOperation.All)]
    public List<Transaction> Transactions { get; set; }
}

Я думаю, что здесь нет никаких проблем ... но в таблице транзакций есть столбцы буксировки, FirstAccountId и TargetAccountId, поэтому мне нравится это:

[Table(nameof(Transaction))]
class Transaction
{
    [PrimaryKey,AutoIncrement]
    public int Id { get; set; }

    [ForeignKey(typeof(Account))]
    public int TargetAccountId { set; get; }

    [ForeignKey(typeof(Account))]
    public int FirstAccountId { get; set; }

    public DateTime DateOfTransaction { get; set; }

    [ManyToOne()]
    public Account Account1 { get; set; }

    [ManyToOne()]
    public Account Account2 { get; set; }`
}

Как я могу сделать Account1учетная запись для FirstAccountId и Account2 является учетной записью для TargetAccountId

1 Ответ

0 голосов
/ 27 февраля 2019

Согласно исходному коду ManyToOne ( см. Здесь ), в качестве параметра принимается string foreignKey.Я не нашел ничего об этом в документации, но я бы предположил, что вы можете явно указать внешний ключ, используя этот параметр, хотя я ничего не нашел в документации

[ManyToOne(nameof(FirstAccountId))]
public Account Account1 { get; set; }

[ManyToOne(nameof(TargetAccountId))]
public Account Account2 { get; set; }
...