首页 > 代码库 > PetaPoco join连接问题
PetaPoco join连接问题
petapoco是一个轻型的ORM,在这里不做详细介绍了。本文主要对如何对petapoco对象使用join连接,查询相关数据库。
1.首先创建一个简单的数据库,包含两个表。本文使用sql server 2008创建,如下图所示。
SubTask表中有三个属性分别为Id、TaskId和Status,Task有两个属性分别为Id和Style,都是简单定义的,如下图所示。
2,创建一个控制台程序,加载petapoco.dll,然后分别创建两个petapoco对象,分别为subtask和task。注意join连接有多种形式,这里我选择left join。同时要注意连接顺序,一定要在创建的对象中定义被连接的对象。如我在subtask类中定义了task类。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Demo1 8 { 9 [PetaPoco.TableName("SubTask")] 10 [PetaPoco.PrimaryKey("Id")] 11 public class subtask 12 { 13 public int Id { get; set; } 14 public int TaskId { get; set; } 15 public int Status { get; set; } 16 17 [PetaPoco.Ignore] 18 public task t { get; set; }//这个一定要有,不然会报错! 19 } 20 }
task类如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Demo1 8 { 9 [PetaPoco.TableName("Task")] 10 [PetaPoco.PrimaryKey("Id")] 11 public class task 12 { 13 public int Id { get; set; } 14 public int Style { get; set; } 15 } 16 }
3,在这之前一定要配置app.config。
1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <startup> 4 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 5 </startup> 6 <connectionStrings> 7 <add name="connection" connectionString="server=.;integrated security=SSPI;database=DemoOne" 8 providerName="System.Data.SqlClient"/> 9 </connectionStrings> 10 </configuration>
下面就是调用petapoco sql builder创建sql语句了,其实sql语句大小写都可以,没有区别,也是刚学习。left join是显示左侧表的所有信息,右侧按照条件ON显示,没有的话显示为空。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Demo1 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 var db = new PetaPoco.Database("connection"); 14 var sql = PetaPoco.Sql.Builder 15 .Append("Select subt.*,ta.* From SubTask subt") 16 .Append("LEFT JOIN Task ta ON subt.TaskId=ta.Id"); 17 18 var sub = db.Query<subtask, task>(sql).ToList(); 19 20 foreach (var b in sub) 21 { 22 Console.WriteLine("{0}-{1}-{2}", b.Id, b.TaskId, b.Status); 23 } 24 25 Console.WriteLine("next..."); 26 27 } 28 } 29 }
4,在ssms中,调用使用sql语句显示的结果如下:
use DemoOne select subt.*,ta.* from SubTask subt left join Task ta on subt.TaskId=ta.Id go
PetaPoco join连接问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。