Usuário com melhor resposta
Consulta Sql com Linq sem o arquivo .Dbml

Pergunta
-
Respostas
-
sim é possivel, porem um pouco mais trabalhoso!!
você precisar ter o mapeamento de suas entidades em um arquivo XML, como por exemplo este:
<?xml version="1.0" encoding="utf-8"?> <Database Name="dseg267" Class="Dseg267" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007"> <Table Name="dbo.pbcatedt" Member="Pbcatedt"> <Type Name="Pbcatedt"> <Column Name="pbe_name" Member="Pbe_name" Type="System.String" DbType="VarChar(30) NOT NULL" CanBeNull="false" /> <Column Name="pbe_edit" Member="Pbe_edit" Type="System.String" DbType="VarChar(254)" CanBeNull="true" /> <Column Name="pbe_type" Member="Pbe_type" Type="System.Int16" DbType="SmallInt" CanBeNull="true" /> <Column Name="pbe_cntr" Member="Pbe_cntr" Type="System.Int32" DbType="Int" CanBeNull="true" /> <Column Name="pbe_seqn" Member="Pbe_seqn" Type="System.Int16" DbType="SmallInt NOT NULL" CanBeNull="false" /> <Column Name="pbe_flag" Member="Pbe_flag" Type="System.Int32" DbType="Int" CanBeNull="true" /> <Column Name="pbe_work" Member="Pbe_work" Type="System.String" DbType="Char(32)" CanBeNull="true" /> </Type> </Table> </Database>
ter sua entidade criada com os nomes identicos aos da coluna da tabela(a não ser que você altere no mapeamento)
/// <summary> /// Classe exemplo, não está completa /// </summary> public class Pbcatedt { public string Pbe_name { get; set; } public string Pbe_edit { get; set; } public string Pbe_type { get; set; } } }
e na hora da utilização, você irá informar aonde está o arquivo de mapeamento:
você ainda tem a opção de não usar o mapeamento XML, mas sim diretamente na classe atraves do namespace System.Data.Linq.Mapping;SqlConnection conn = new SqlConnection("STRINGDECONEXAO"); conn.Open(); System.Data.Linq.Mapping.XmlMappingSource xmlMapping = System.Data.Linq.Mapping.XmlMappingSource.FromXml("mapeamento.xml"); var db = new System.Data.Linq.DataContext(conn, xmlMapping);//Aqui informa o mapeamento System.Data.Linq.Table<Pbcatedt> tablePbcatedt = db.GetTable<Pbcatedt>(); var query = from c in tablePbcatedt select c; List<Pbcatedt> lst = query.ToList(); //Para inserir Pbcatedt novoPbcatedt = new Pbcatedt { Pbe_name = "Exemplo", Pbe_edit = "Exemplo", Pbe_type = "exemplo" }; tablePbcatedt.Attach(novoPbcatedt);//Attacha um novo objeto do tipo da entidade db.SubmitChanges();//Salva as mudanças
using System; using System.Collections.Generic; using System.Text; using System.Data.Linq.Mapping; /// <summary> /// Classe exemplo, não está completa /// </summary> [Table(Name="dbo.Pbcatedt")]//Nome da tabela public class Pbcatedt { [Column(Name="Pbe_name")] public string Pbe_name { get; set; } [Column(Name = "Pbe_edit")] public string Pbe_edit { get; set; } [Column(Name = "Pbe_type")] public string Pbe_type { get; set; } }
e utliza-lo sem informar o mapemaento xml
//Consulta SqlConnection conn = new SqlConnection("STRINGDECONEXAO"); conn.Open(); var db = new System.Data.Linq.DataContext(conn); System.Data.Linq.Table<Pbcatedt> tablePbcatedt = db.GetTable<Pbcatedt>(); var query = from c in tablePbcatedt select c; List<Pbcatedt> lst = query.ToList(); //Para inserir Pbcatedt novoPbcatedt = new Pbcatedt { Pbe_name = "Exemplo", Pbe_edit = "Exemplo", Pbe_type = "exemplo" }; tablePbcatedt.Attach(novoPbcatedt);//Attacha um novo objeto do tipo da entidade db.SubmitChanges();//Salva as mudanças
Olavo Oliveira Neto
Se for útil marque como resposta e faça um Developer feliz :)- Sugerido como Resposta Olavo Oliveira NetoModerator sexta-feira, 14 de janeiro de 2011 12:15
- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 14 de janeiro de 2011 12:19
Todas as Respostas
-
sim é possivel, porem um pouco mais trabalhoso!!
você precisar ter o mapeamento de suas entidades em um arquivo XML, como por exemplo este:
<?xml version="1.0" encoding="utf-8"?> <Database Name="dseg267" Class="Dseg267" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007"> <Table Name="dbo.pbcatedt" Member="Pbcatedt"> <Type Name="Pbcatedt"> <Column Name="pbe_name" Member="Pbe_name" Type="System.String" DbType="VarChar(30) NOT NULL" CanBeNull="false" /> <Column Name="pbe_edit" Member="Pbe_edit" Type="System.String" DbType="VarChar(254)" CanBeNull="true" /> <Column Name="pbe_type" Member="Pbe_type" Type="System.Int16" DbType="SmallInt" CanBeNull="true" /> <Column Name="pbe_cntr" Member="Pbe_cntr" Type="System.Int32" DbType="Int" CanBeNull="true" /> <Column Name="pbe_seqn" Member="Pbe_seqn" Type="System.Int16" DbType="SmallInt NOT NULL" CanBeNull="false" /> <Column Name="pbe_flag" Member="Pbe_flag" Type="System.Int32" DbType="Int" CanBeNull="true" /> <Column Name="pbe_work" Member="Pbe_work" Type="System.String" DbType="Char(32)" CanBeNull="true" /> </Type> </Table> </Database>
ter sua entidade criada com os nomes identicos aos da coluna da tabela(a não ser que você altere no mapeamento)
/// <summary> /// Classe exemplo, não está completa /// </summary> public class Pbcatedt { public string Pbe_name { get; set; } public string Pbe_edit { get; set; } public string Pbe_type { get; set; } } }
e na hora da utilização, você irá informar aonde está o arquivo de mapeamento:
você ainda tem a opção de não usar o mapeamento XML, mas sim diretamente na classe atraves do namespace System.Data.Linq.Mapping;SqlConnection conn = new SqlConnection("STRINGDECONEXAO"); conn.Open(); System.Data.Linq.Mapping.XmlMappingSource xmlMapping = System.Data.Linq.Mapping.XmlMappingSource.FromXml("mapeamento.xml"); var db = new System.Data.Linq.DataContext(conn, xmlMapping);//Aqui informa o mapeamento System.Data.Linq.Table<Pbcatedt> tablePbcatedt = db.GetTable<Pbcatedt>(); var query = from c in tablePbcatedt select c; List<Pbcatedt> lst = query.ToList(); //Para inserir Pbcatedt novoPbcatedt = new Pbcatedt { Pbe_name = "Exemplo", Pbe_edit = "Exemplo", Pbe_type = "exemplo" }; tablePbcatedt.Attach(novoPbcatedt);//Attacha um novo objeto do tipo da entidade db.SubmitChanges();//Salva as mudanças
using System; using System.Collections.Generic; using System.Text; using System.Data.Linq.Mapping; /// <summary> /// Classe exemplo, não está completa /// </summary> [Table(Name="dbo.Pbcatedt")]//Nome da tabela public class Pbcatedt { [Column(Name="Pbe_name")] public string Pbe_name { get; set; } [Column(Name = "Pbe_edit")] public string Pbe_edit { get; set; } [Column(Name = "Pbe_type")] public string Pbe_type { get; set; } }
e utliza-lo sem informar o mapemaento xml
//Consulta SqlConnection conn = new SqlConnection("STRINGDECONEXAO"); conn.Open(); var db = new System.Data.Linq.DataContext(conn); System.Data.Linq.Table<Pbcatedt> tablePbcatedt = db.GetTable<Pbcatedt>(); var query = from c in tablePbcatedt select c; List<Pbcatedt> lst = query.ToList(); //Para inserir Pbcatedt novoPbcatedt = new Pbcatedt { Pbe_name = "Exemplo", Pbe_edit = "Exemplo", Pbe_type = "exemplo" }; tablePbcatedt.Attach(novoPbcatedt);//Attacha um novo objeto do tipo da entidade db.SubmitChanges();//Salva as mudanças
Olavo Oliveira Neto
Se for útil marque como resposta e faça um Developer feliz :)- Sugerido como Resposta Olavo Oliveira NetoModerator sexta-feira, 14 de janeiro de 2011 12:15
- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 14 de janeiro de 2011 12:19
-
Muito boa a Explicação!!! Pelo método sem o XML achei mais fácil e vou fazer testes.
Tudo isso por que no dominio aqui da empresa o VS não deixa criar Objetos tipados, eu consigo criar o arquivo DBML, mas na hora de criar a conexão pelo Server Explorer ele não deixa.
Valeu!!!
-
o XML é mais fácil por que você pode gerar ele autoamticamente, lá no promt do Visual Studio Command Prompt (2010) você digita SQLMETAL /server:SERVIDOR /database:NOMEDOBANCO > nomedoarquivo.XML e ele irá salvar o arquivo. você abre, apaga as duas primeiras linhas e pronto!!!
Olavo Oliveira Neto
Se for útil marque como resposta e faça um Developer feliz :) -