Развертывание приложения Xamarin для iOS на физических устройствах - PullRequest
0 голосов
/ 31 августа 2018

Я разработал приложение, используя Xamarin.Forms с .NET Shared Project 2.0. Приложение Android отлично работает как на симуляторе, так и на физических устройствах, но приложение iOS отлично работает на симуляторе, но не работает на физических устройствах. Проблема заключается в подключении к базе данных SQLite при создании контекста. Мой контекстный класс выглядит следующим образом:

[Preserve(AllMembers = true)]
public class EmployeesContext : DbContext
{
    public DbSet<Employee> Employees { get; set; }
    private string _databasePath;

    public EmployeesContext()
    {

    }

    public EmployeesContext(string databasePath)
    {
        _databasePath = databasePath;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite($"Filename={_databasePath}");
    }
} 

и код, который выдает исключение

public bool DeleteAllEmployees()
    {
        try
        {
            using (var db = new EmployeesContext(DbPath))
            {
                SQLitePCL.Batteries.Init();
                db.Database.EnsureCreated();

                foreach (Employee e in db.Employees)
                {
                    db.Employees.Remove(e);
                    Console.WriteLine("deleted employee: " + e.CompanyID);
                }

                db.SaveChanges();

                return true;
            }
        }
        catch (Exception ex)
        {
            return false;
        }
    } 

когда я инициализирую EmployeesContext. Сообщение об исключении:

{System.InvalidOperationException: A suitable constructor for type 'Microsoft.EntityFrameworkCore.Internal.DiagnosticsLogger1[Microsoft.EntityFrameworkCore.DbLoggerCategory+Infrastructure]' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor.}

У меня есть опция компоновщика "Link All", и я прочитал, что другие пользователи должны установить для этого параметра "Don't Link", но если я сделаю это, я не смогу собрать для физических устройств, потому что получаю следующее ошибка:

Could not AOT the assembly '/Users/apple/Library/Caches/Xamarin/mtbs/builds/My1stAidAppCompany.iOS/6ef11966ebc899886e5f8e58172f085a/obj/iPhone/Debug/mtouch-cache/Build/Microsoft.EntityFrameworkCore.dll'

Я использую Microsoft.EntityFrameworkCore 2.1.0 и sqlite-net-pcl 1.4.118 для доступа к БД. Я пытался обновить и понизить Microsoft.EntityFrameworkCore, но не смог решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...