como selecionar alguns campos de um determinado model usando linq to sql

23/07/2012

0

Boa tarde a todos!
Galera eu sou novo em ASP.net e estou estudando ASP.net MVC 3 .
Eu tenho um Entity Data Model do meu Banco de Dados e nele esta a tabela produtos que por sua vez tem 38 campo minha duvida é o seguinte, tem como eu selecionar apenas 3 campos (titulo,valor,desconto) pois quando eu debugo a minha
aplicação da o seguinte erro;

O esquema especificado não é válido. Erros:
Models.md_loja.msl(269,12) : erro 2046: A mapping function binding specifies a function lojaModel.Store.valor that is not supported. Only functions that cannot be composed are supported.

Controller

lojaEntities tabelas = new lojaEntities();

public ActionResult Index()
{
var tbl_produtos = from P in tabelas.produtos
select
new
{
P.titulo,
P.valor,
P.desconto,
P.imagem
};


return View(tbl_produtos.First());
}

Só mais um coisinha quando eu crio a minha views baseada no model class produtos(asp_net.Models) ele cria uma lista com todos os campos da tabela mais eu queria que fosse apenas dos campos do meu select acima
Eu estou usando.
Mysql.
Desde já eu agradeço a todos
Wallas

Wallas

Responder

Posts

23/07/2012

Renato Groffe

WALLAS,


Boa tarde.

Crie uma classe que contenha esses campos. O erro acontece pois a expressão que você codificou gera objetos baseados num tipo/classe dinâmico. Ao passar essas informações para a View a mesma é incapaz de reconhecer a estrutura do objeto resultante.

Ficaria mais ou menos assim:

public class ResumoProduto
{
public string titulo { get; set; }
public decimal valor { get; set; }
public decimal desconto { get; set; }
public string imagem { get; set; }
}


E na Action:

public ActionResult Index()
{
var tbl_produtos = from P in tabelas.produtos
select
new ResumoProduto()
{
titulo = P.titulo,
valor = P.valor,
desconto = P.desconto,
imagem = P.imagem
};


return View(tbl_produtos.First());
}

Espero que isso ajude!
Responder

24/07/2012

Wallas

Valeu Retano pela ajuda
Mais agora gerou outro erro
Cannot implicitly convert type decimal? to decimal. An explicit conversion exists (are you missing a cast?)
Tanto em valor como também desconto
Controller


public ActionResult Index()
{
var tbl_produtos = from P in tabelas.produtos
select
new produtos()
{
titulo = P.titulo,
valor = P.valor,
desconto = P.desconto,
imagem = P.imagem
};


return View(tbl_produtos.First());
}

Class

namespace asp_net.Controllers
{
public class produtos
{
public string titulo { get; set; }
public decimal valor { get; set; }
public decimal desconto { get; set; }
public string imagem { get; set; }
}
}

Eu não entendi pois no model ele já está em Decimal
Tanto valor como também o desconto


Responder

24/07/2012

Renato Groffe

Tente alterar a classe de produto para o seguinte:

public class produtos
{
public string titulo { get; set; }
public decimal? valor { get; set; }
public decimal? desconto { get; set; }
public string imagem { get; set; }
}

O ? ao final do tipo indica que ele é um Nullable, ou seja, além de acertar números por exemplo, o valor null também pode estar associado a uma variável, parâmetro ou propriedade deste tipo. Como seu banco de dados provavelmente aceita NULL nestes campos, o modelo no Entity Framework foi gerado baseando-se nisto.

Espero que tenha ajudado.
Responder

26/07/2012

Wallas

Cara Veu mesmo pela dica deu certo
Fica na Paz
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar