手动使用linq对象
1,创建model对象,studentDB.cs

1 #region Using directives 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Text; 6 using System.Data.Linq.Mapping; 7 using System.Data.Linq; 8 using System.Configuration; 9 #endregion 10 11 12 namespace CSLinqToSQL.Manual 13 { 14 [Table(Name = "Person")] 15 public class Student 16 { 17 public Student() 18 { 19 this._Grades = new EntitySet<CourseGrade>(); 20 21 // Set the default value of the column PersonCategory 22 this.PersonCategory = 1; 23 } 24 25 // Refer to the ID column in database. 26 [Column(IsPrimaryKey = true, Name = "PersonID", IsDbGenerated = true, 27 AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY")] 28 public int PersonID 29 { 30 get; 31 set; 32 } 33 34 // Refer to the LastName column in database 35 [Column] 36 public string LastName 37 { 38 get; 39 set; 40 } 41 42 // Refer to the FirstName column in database 43 [Column] 44 public string FirstName 45 { 46 get; 47 set; 48 } 49 50 // Refer to the EnrollmentDate column in database 51 [Column] 52 public System.Nullable<System.DateTime> EnrollmentDate 53 { 54 get; 55 set; 56 } 57 58 // Refer to the PersonCategory column in database 59 [Column] 60 public short PersonCategory 61 { 62 get; 63 set; 64 } 65 66 // Refer to the FK of FK_CourseGrade_Student 67 private EntitySet<CourseGrade> _Grades; 68 [Association(Storage = "_Grades", OtherKey = "StudentID")] 69 public EntitySet<CourseGrade> CourseGrades 70 { 71 get { return this._Grades; } 72 set { this._Grades.Assign(value); } 73 } 74 75 // Refer to the image column in database 76 [Column(Name = "Picture")] 77 public Byte[] Picture 78 { 79 get; 80 set; 81 } 82 } 83 84 [Table(Name = "Course")] 85 public class Course 86 { 87 public Course() 88 { 89 this._Grades = new EntitySet<CourseGrade>(); 90 } 91 92 // Refer to the CourseID column in database 93 [Column(IsPrimaryKey = true, Name = "CourseID")] 94 public int CourseID 95 { 96 get; 97 set; 98 } 99 100 // Refer to the Title column in database 101 [Column(Name = "Title")] 102 public string Title 103 { 104 get; 105 set; 106 } 107 108 // Refer to the Credits column in database 109 [Column] 110 public int Credits 111 { 112 get; 113 set; 114 } 115 116 // Refer to the FK for FK_CourseGrade_Course 117 private EntitySet<CourseGrade> _Grades; 118 [Association(Storage = "_Grades", OtherKey = "CourseID")] 119 public EntitySet<CourseGrade> Grades 120 { 121 get { return this._Grades; } 122 set { this._Grades.Assign(value); } 123 } 124 } 125 126 [Table(Name = "CourseGrade")] 127 public class CourseGrade 128 { 129 public CourseGrade() 130 { 131 this._Course = default(EntityRef<Course>); 132 this._Student = default(EntityRef<Student>); 133 } 134 135 // Refer to the EnrollmentID column in database 136 [Column(IsPrimaryKey = true, Name = "EnrollmentID", IsDbGenerated = true)] 137 public int EnrollmentID 138 { 139 get; 140 set; 141 } 142 143 // Refer to the CourseID column in database 144 [Column(Name = "CourseID")] 145 public int CourseID 146 { 147 get; 148 set; 149 } 150 151 // Refer to the StudentID column in database 152 [Column(Name = "StudentID")] 153 public int StudentID 154 { 155 get; 156 set; 157 } 158 159 // Refer to the Grade column in database 160 [Column] 161 public decimal Grade 162 { 163 get; 164 set; 165 } 166 167 // Refer to the FK of FK_CourseGrade_Course 168 private EntityRef<Course> _Course; 169 [Association(Storage = "_Course", ThisKey = "CourseID")] 170 public Course Course 171 { 172 get { return this._Course.Entity; } 173 set { this._Course.Entity = value; } 174 } 175 176 // Refer to the FK of FK_CourseGrade_Student 177 private EntityRef<Student> _Student; 178 [Association(Storage = "_Student", ThisKey = "StudentID")] 179 public Student Student 180 { 181 get { return this._Student.Entity; } 182 set { this._Student.Entity = value; } 183 } 184 } 185 186 public class SchoolDataContext : DataContext 187 { 188 public Table<Student> Students; 189 public Table<Course> Courses; 190 public Table<CourseGrade> CourseGrades; 191 public SchoolDataContext(string connection) : base(connection) { } 192 } 193 }
2,手动操作

1 /// <summary> 2 /// 读取图片路径转换成字节数 3 /// </summary> 4 /// <param name="path">The path of the image file.</param> 5 /// <returns>The output of the array.</returns> 6 private static byte[] ReadImage(string path) 7 { 8 try 9 { 10 // Open the image file 11 using (FileStream fs = new FileStream(path, FileMode.Open, 12 FileAccess.Read)) 13 { 14 // Create an array of bytes 15 byte[] bPicture = new byte[fs.Length]; 16 17 // Read the image file 18 fs.Read(bPicture, 0, Convert.ToInt32(fs.Length)); 19 20 return bPicture; 21 } 22 } 23 catch (Exception ex) 24 { 25 Console.WriteLine( 26 "The application throws the error: {0}", ex.Message); 27 return null; 28 } 29 } 30 /// <summary> 31 /// 下面的方法适用于手动创建的类 32 /// </summary> 33 private static void QueryDBByManuallyCreatedClasses() 34 { 35 Console.WriteLine("Query using the manually-created classes."); 36 try 37 { 38 string connStr = ConfigurationManager.ConnectionStrings[ 39 "SQLServer2005DB"].ConnectionString; 40 41 // DataContext takes a connection string 42 CSLinqToSQL.Manual.SchoolDataContext db = new 43 CSLinqToSQL.Manual.SchoolDataContext(connStr); 44 Console.WriteLine("\nAdd a new student to the Person table"); 45 46 47 // 创建一个新学生。 48 // 我们不需要在此处设置的 PersonCategory 值,如果我们想要 49 // 默认值将设置为此数据库中的列。 50 CSLinqToSQL.Manual.Student student = new CSLinqToSQL.Manual.Student 51 { 52 FirstName = "Rongchun", 53 LastName = "Zhang", 54 EnrollmentDate = DateTime.Now, 55 Picture = ReadImage(@"MSDN.jpg"), 56 }; 57 58 // 添加一个新对象到学生表 59 db.Students.InsertOnSubmit(student); 60 61 // 提交数据 62 db.SubmitChanges(); 63 64 // 查询学生 65 Console.WriteLine("\nQuery students whose first name is Roger:"); 66 var students = from p in db.Students 67 where p.FirstName == "Roger" 68 select p; 69 70 foreach (var p in students) 71 Console.WriteLine("ID = {0}, Name = {1} {2}", p.PersonID, 72 p.FirstName, p.LastName); 73 74 // 连表查询 75 Console.WriteLine("\nQuery max. grade of each course:"); 76 var courses = 77 from grade in db.CourseGrades 78 group grade by grade.CourseID into g 79 join cur in db.Courses on g.Key equals cur.CourseID 80 select new 81 { 82 CourseID = g.Key, 83 Title = cur.Title, 84 TopGrade = g.Max(gra => gra.Grade) 85 }; 86 87 foreach (var c in courses) 88 Console.WriteLine("Course = {0}, TopGrade = {1}", 89 c.Title, c.TopGrade); 90 91 Console.WriteLine("\nQuery all grades that Nino got"); 92 93 var grades = 94 from stu in db.Students 95 from gra in stu.CourseGrades 96 join cur in db.Courses on gra.CourseID equals cur.CourseID 97 where stu.FirstName == "Nino" 98 select new 99 { 100 Stduent = stu, 101 Course = cur, 102 CourseGrade = gra 103 }; 104 105 foreach (var grade in grades) 106 { 107 Console.WriteLine("FirstName = {0}, Course= {1}, Grade= {2}", 108 grade.Stduent.FirstName, 109 grade.Course.Title, 110 grade.CourseGrade.Grade); 111 } 112 } 113 catch (Exception e) 114 { 115 Console.WriteLine("The application throws the error: {0}", e.Message); 116 } 117 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?