5
respostas

Xamarin Forms SQLite com objetos complexos

Boa noite.

Estou com um problema em salvar um objeto que possui outros objetos complexos como propriedades no SQLite.

Estou tentando salvar um objeto venda com a propriedade cliente no SQLite. Baseado em alguns artigos na internet implementei a classe de modelo abaixo:

 public class Venda
    {

        private int clienteId;
        [ForeignKey(typeof(Cliente))]
        public int ClienteId
        {
            get { return clienteId; }
            set
            {
                clienteId = value;
            }
        }

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

Porém quando insiro a venda exibe um erro falando que não existe a coluna Cliente na tabela Venda.

Gostaria de saber qual a forma correta de declarar essa propriedade nessa classe para que consiga utilizá-la.

Muito obrigado. Paulo Amorim.

5 respostas

Boa Tarde Paulo,

Você tem o código da classe Cliente?

Boa tarde, Henrique.

A classe cliente é essa:

    public class Cliente
    {

        private int id;
        public sint Id
        {
            get { return id; }
            set
            {
                id= value;
            }
        }
        private string nome;
        public string Nome
        {
            get { return nome; }
            set
            {
                nome = value;
            }
        }
}

Muito obrigado.

Paulo Amorim.

Paulo,

Você consegue inserir somente na tabela cliente?

Como está seu arquivo CreateDatabaseWithSqliteNet.cs?

Obrigado.

Boa tarde, Henrique.

Consigo realizar o CRUD na classe Cliente.

Não existe esse arquivo que você mensionou no meu projeto. O meu projeto foi baseado nos 4 cursos de Xamarin do Marcelo de Oliveira.

Para criar a tabela utilizo o código abaixo:

public class VendaDAO : EntityBaseDAO<Venda>
    {
        public VendaDAO(): base(App.SqlConnection)
        {
            App.SqlConnection.CreateTableAsync<Venda>();
        }
    }

Caso seja necessário posso subir o código fonte do projeto que estou desenvolvendo.

Muito obrigado.

Paulo Amorim.

Paulo,

Tentei pesquisar, parece que o problema pode ser o Sqlite PCL. Tente removê-lo conforme abaixo:

https://forums.xamarin.com/discussion/48545/xamarin-forms-with-sqlite-one-to-many-relationship

Achei um package também que gerência relacionamentos complexos entre objetos:

https://www.nuget.org/packages/SQLiteNetExtensions/

Fonte: https://forums.xamarin.com/discussion/2973/foreign-keys-in-sqlite-net