C# SQL查询+;数据表+;网格视图
我需要从SQL数据库读取数据,并在表中创建以下结果:C# SQL查询+;数据表+;网格视图,c#,sql,gridview,datatable,C#,Sql,Gridview,Datatable,我需要从SQL数据库读取数据,并在表中创建以下结果: DATABASE ========= Server, Site Name, Status 001, Site 1, Down 002, Site 1, Up 003, Site 2, Up 004, Site 2, Down 001, Site 3, Up 005, Site 4, Down 站点1:它存在于2台服务器中(001002) 站点2:它存在于2台服务器(003、004)中 站点3:它仅存在于1台服务器(001)中 站点4:它仅
DATABASE
=========
Server, Site Name, Status
001, Site 1, Down
002, Site 1, Up
003, Site 2, Up
004, Site 2, Down
001, Site 3, Up
005, Site 4, Down
- 站点1:它存在于2台服务器中(001002)
- 站点2:它存在于2台服务器(003、004)中
- 站点3:它仅存在于1台服务器(001)中
- 站点4:它仅存在于1台服务器中(005)
我该怎么做?您是否考虑过使用
DataContext
或DbContext
。基本上将数据库映射到代码。然后可以利用LINQ
例如,如果有一个Students表和StudentInfo表,则可以执行以下操作:
public class MyContext : DataContext
{
public Table<Student> Students { get { return GetTable<Student>(); } }
public Table<StudentInfo> StudentInfo { get { return GetTable<StudentInfo>(); } }
public MyContext(string ConnString) : base(ConnString) {}
}
[Table(Name = "dbo.Students")]
public class Student
{
[Column(IsPrimary = true, Name = "StudentId", IsDbGenerated = true, DbType = "int Not Null IDENTITY")]
public int StudentId { get; set; }
[Column(Name = "Name")]
public string Name { get; set; }
}
[Table(Name = "dbo.StudentInfo")]
public class StudentInfo
{
[Column(IsPrimary = true, Name = "StudentInfoId", IsDbGenerated = true, DbType = "int Not Null IDENTITY")]
public int StudentInfoId { get; set; }
[Column(Name = "StudentId")]
public int StudentId { get; set; } // FK
[Column(Name = "Address")]
public string Address{ get; set; }
}
// a method somewhere
public void StudentLookup(string name)
{
var MyContext context = new MyContext(connString);
var student = context.Students.Single(x => x.Name == name)
var StudentInfo = context.StudentInfo.Where(x => x.StudentId == student.StudentId);
}
公共类MyContext:DataContext
{
公共表学生{get{return GetTable();}}
公共表StudentInfo{get{return GetTable();}}
公共MyContext(字符串ConnString):基(ConnString){}
}
[表(Name=“dbo.Students”)]
公立班学生
{
[列(IsPrimary=true,Name=“StudentId”,IsDbGenerated=true,DbType=“int Not Null IDENTITY”)]
公共int StudentId{get;set;}
[列(Name=“Name”)]
公共字符串名称{get;set;}
}
[表(Name=“dbo.StudentInfo”)]
公共班级学生信息
{
[列(IsPrimary=true,Name=“studentinfo”,IsDbGenerated=true,DbType=“int Not Null IDENTITY”)]
public int studentInfo{get;set;}
[列(Name=“StudentId”)]
public int StudentId{get;set;}//FK
[列(Name=“Address”)]
公共字符串地址{get;set;}
}
//某处的方法
public void StudentLookup(字符串名称)
{
var MyContext context=新的MyContext(connString);
var student=context.Students.Single(x=>x.Name==Name)
var StudentInfo=context.StudentInfo.Where(x=>x.StudentId==student.StudentId);
}
这是一种选择,但我建议使用实体框架和代码优先迁移也许LINQ更适合实现我需要的功能?如果是,怎么做?
public class MyContext : DataContext
{
public Table<Student> Students { get { return GetTable<Student>(); } }
public Table<StudentInfo> StudentInfo { get { return GetTable<StudentInfo>(); } }
public MyContext(string ConnString) : base(ConnString) {}
}
[Table(Name = "dbo.Students")]
public class Student
{
[Column(IsPrimary = true, Name = "StudentId", IsDbGenerated = true, DbType = "int Not Null IDENTITY")]
public int StudentId { get; set; }
[Column(Name = "Name")]
public string Name { get; set; }
}
[Table(Name = "dbo.StudentInfo")]
public class StudentInfo
{
[Column(IsPrimary = true, Name = "StudentInfoId", IsDbGenerated = true, DbType = "int Not Null IDENTITY")]
public int StudentInfoId { get; set; }
[Column(Name = "StudentId")]
public int StudentId { get; set; } // FK
[Column(Name = "Address")]
public string Address{ get; set; }
}
// a method somewhere
public void StudentLookup(string name)
{
var MyContext context = new MyContext(connString);
var student = context.Students.Single(x => x.Name == name)
var StudentInfo = context.StudentInfo.Where(x => x.StudentId == student.StudentId);
}