ENTITY FRAMEWORK
Olá pessoal, boa noite!
Criei um projeto com o entity framework 4.1 CodeFirst para dar umas futucadas e ele está gerando as seguintes tabelas:
Clientes (id, Nome, Id_Vendedor)
Vendedores(id, Nome)
Pedidos (Id, Id_Cliente, Id_Vendedor)
Na minha classe Vendedor, eu tenho o seguinte:
Public Class Vendedor
property Clientes As ICollection(of Cliente)
End Class
Como vocês podem perceber, o entity na hora de gerar as tabelas e os campos, está colocando uma chave estrangeira na tabela Clientes (Id_Vendedor) para popular a propriedade Clientes que está na classe Vendedor, só que a minha intenção é eliminar essa chave estrangeira e popular a propriedade Clientes da classe Vendedor pela tabela de Pedido.
Como trazer os clientes da tabela Pedido para popular a propriedade Clientes da classe Vendedor?
vlw
Criei um projeto com o entity framework 4.1 CodeFirst para dar umas futucadas e ele está gerando as seguintes tabelas:
Clientes (id, Nome, Id_Vendedor)
Vendedores(id, Nome)
Pedidos (Id, Id_Cliente, Id_Vendedor)
Na minha classe Vendedor, eu tenho o seguinte:
Public Class Vendedor
property Clientes As ICollection(of Cliente)
End Class
Como vocês podem perceber, o entity na hora de gerar as tabelas e os campos, está colocando uma chave estrangeira na tabela Clientes (Id_Vendedor) para popular a propriedade Clientes que está na classe Vendedor, só que a minha intenção é eliminar essa chave estrangeira e popular a propriedade Clientes da classe Vendedor pela tabela de Pedido.
Como trazer os clientes da tabela Pedido para popular a propriedade Clientes da classe Vendedor?
vlw
O EF vai gerar as classes exatamente como a estrutura do seu banco de dados.
Fala ai Kerplunk, tudo bom?
Quem esta gerando a base de dados é o entity. Ele está criando o Id do Vendedor na tabela cliente, e eu estou tentando retirar essa chave estrangeira de lá.
Para resolver isso, eu tenho que mapear a propriede Clientes da classe Vendedor para a Tabela pedidos, se baseando pelo Id_Cliente e Id_Vendedor.
No Nhibernate, eu tenho algo mais ou menos assim:
public class Vendedor : Funcionario
{
[hasMany(GetType(Cliente), Table:= [Ô]Pedidos[Ô], ColumnKey:= [Ô]Id_Cliente, ColumnRef:=[Ô]Id_Vendedor[Ô]]
public virtual IList<Cliente> Clientes { get; set; }
}
é exatamente isso que eu quero fazer, só que com o Entity.
Eu tentei isso aqui:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Vendedor>().HasMany(v => v.Clientes).WithMany().Map(m => m.ToTable([Ô]Pedidos[Ô]).MapLeftKey([Ô]Vendedor_Id[Ô]).MapRightKey([Ô]Cliente_Id[Ô]));
}
Porém, ele está criando duas Tabelas: Pedidos e Pedidos1
Tem alguma ideia de como resolver isso?
vlw
Quem esta gerando a base de dados é o entity. Ele está criando o Id do Vendedor na tabela cliente, e eu estou tentando retirar essa chave estrangeira de lá.
Para resolver isso, eu tenho que mapear a propriede Clientes da classe Vendedor para a Tabela pedidos, se baseando pelo Id_Cliente e Id_Vendedor.
No Nhibernate, eu tenho algo mais ou menos assim:
public class Vendedor : Funcionario
{
[hasMany(GetType(Cliente), Table:= [Ô]Pedidos[Ô], ColumnKey:= [Ô]Id_Cliente, ColumnRef:=[Ô]Id_Vendedor[Ô]]
public virtual IList<Cliente> Clientes { get; set; }
}
é exatamente isso que eu quero fazer, só que com o Entity.
Eu tentei isso aqui:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Vendedor>().HasMany(v => v.Clientes).WithMany().Map(m => m.ToTable([Ô]Pedidos[Ô]).MapLeftKey([Ô]Vendedor_Id[Ô]).MapRightKey([Ô]Cliente_Id[Ô]));
}
Porém, ele está criando duas Tabelas: Pedidos e Pedidos1
Tem alguma ideia de como resolver isso?
vlw
O codigo do projeto está assim:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
public class Pedido
{
public Pedido()
{
Itens = new List<ItemPedido>();
}
public int Id { get; set; }
public Vendedor Vendedor { get; set; }
public Cliente Cliente { get; set; }
public virtual ICollection<ItemPedido> Itens { get; set; }
}
}
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]ItensPedido[Ô])]
public class ItemPedido
{
public int Id { get; set; }
public Produto Produto { get; set; }
public int Quantidade { get; set; }
public Pedido Pedido { get; set; }
}
}
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]Produtos[Ô])]
public class Produto
{
public int Id { get; set; }
public string Descricao { get; set; }
public string CodigoDeBarras { get; set; }
public int Quantidade { get; set; }
}
}
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]Pessoas[Ô])]
public class Pessoa
{
public int Id { get; set; }
public string Nome { get; set; }
}
}
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]PessoasFisicas[Ô])]
public class PessoaFisica: Pessoa
{
public string CPF { get; set; }
}
}
===============================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]Clientes[Ô])]
public class Cliente : PessoaFisica
{
public decimal Saldo { get; set; }
public virtual ICollection<Pedido> Pedidos { get; set; }
}
}
===============================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]Funcionarios[Ô])]
public class Funcionario : PessoaFisica
{
public decimal Salario { get; set; }
}
}
===============================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]Vendedores[Ô])]
public class Vendedor : Funcionario
{
public int Comissao { get; set; }
public virtual ICollection<Cliente> Clientes { get; set; }
}
}
===============================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace CarrinhoDeCompras.Models
{
public class Contexto : DbContext
{
//public Contexto() : base([Ô]CarrinhoDeCompras[Ô]) { }
public DbSet<Pessoa> Pessoas { get; set; }
public DbSet<PessoaFisica> PessoasFisicas { get; set; }
public DbSet<Cliente> Clientes { get; set; }
public DbSet<Funcionario> Funcionarios { get; set; }
public DbSet<Vendedor> Vendedores { get; set; }
public DbSet<Produto> Produtos { get; set; }
public DbSet<Pedido> Pedidos { get; set; }
public DbSet<ItemPedido> ItensPedido { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
public class Pedido
{
public Pedido()
{
Itens = new List<ItemPedido>();
}
public int Id { get; set; }
public Vendedor Vendedor { get; set; }
public Cliente Cliente { get; set; }
public virtual ICollection<ItemPedido> Itens { get; set; }
}
}
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]ItensPedido[Ô])]
public class ItemPedido
{
public int Id { get; set; }
public Produto Produto { get; set; }
public int Quantidade { get; set; }
public Pedido Pedido { get; set; }
}
}
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]Produtos[Ô])]
public class Produto
{
public int Id { get; set; }
public string Descricao { get; set; }
public string CodigoDeBarras { get; set; }
public int Quantidade { get; set; }
}
}
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]Pessoas[Ô])]
public class Pessoa
{
public int Id { get; set; }
public string Nome { get; set; }
}
}
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]PessoasFisicas[Ô])]
public class PessoaFisica: Pessoa
{
public string CPF { get; set; }
}
}
===============================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]Clientes[Ô])]
public class Cliente : PessoaFisica
{
public decimal Saldo { get; set; }
public virtual ICollection<Pedido> Pedidos { get; set; }
}
}
===============================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]Funcionarios[Ô])]
public class Funcionario : PessoaFisica
{
public decimal Salario { get; set; }
}
}
===============================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace CarrinhoDeCompras.Models
{
[Table([Ô]Vendedores[Ô])]
public class Vendedor : Funcionario
{
public int Comissao { get; set; }
public virtual ICollection<Cliente> Clientes { get; set; }
}
}
===============================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace CarrinhoDeCompras.Models
{
public class Contexto : DbContext
{
//public Contexto() : base([Ô]CarrinhoDeCompras[Ô]) { }
public DbSet<Pessoa> Pessoas { get; set; }
public DbSet<PessoaFisica> PessoasFisicas { get; set; }
public DbSet<Cliente> Clientes { get; set; }
public DbSet<Funcionario> Funcionarios { get; set; }
public DbSet<Vendedor> Vendedores { get; set; }
public DbSet<Produto> Produtos { get; set; }
public DbSet<Pedido> Pedidos { get; set; }
public DbSet<ItemPedido> ItensPedido { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
}
}
Tópico encerrado , respostas não são mais permitidas