使用NSun快速开发ORM在3.5的便捷之关系生成
基上一篇使用NSun快速开发ORM在3.5中的便捷,进行实际代码生成。(这里只对ORM查询进行生成使用,更多的添加修改待完善)
关系表示映射。
首先连接所对应数据库,选择需要生成的表进行映射,关系表1和关系表2以及两个表对应的关系字段,还要选择两表之间的关系。暂时没做多对多的关系。
Phone 手机
School 学生
Student 学校
3张表体现的是一对多,多对一,一对一的关系。
1.手机和学生是一对一的关系 这里表现为学生phoneid外键对应手机id
2.学生和学校是多对一的关系
3.学校和学生是一对多的关系
一对多添加(会自动组建多对一的关系):
多对一添加(同样会自动建立一对多关系):
一对一添加(这里需要选择所选关系表1对应字段是否是主键,如果是则需要勾上IsPK选项,同时也会生成一组一对一关系):
完成添加后会生成一个扩展方法类方便调用得到对因关系表的内容:
当然也是使用NSun内部方法来调用查询实现的。
public static class SchoolExtensionMethods
{
public static List<StudentInfo> Students(this SchoolInfo info)
{
return DBFactory.dbStudent.SelectToIList(DBFactory.dbStudent.GetSelectSqlSection().Where(StudentInfo.__schoolid == info.Id));
}
}
public static class StudentExtensionMethods
{
public static SchoolInfo School(this StudentInfo info)
{
return DBFactory.dbSchool.SelectToEntity(info.Schoolid);
}
public static PhoneInfo Phone(this StudentInfo info)
{
return DBFactory.dbPhone.SelectToEntity(info.Phoneid);
}
}
public static class PhoneExtensionMethods
{
public static StudentInfo Student(this PhoneInfo info)
{
return DBFactory.dbStudent.SelectToEntity(DBFactory.dbStudent.GetSelectSqlSection().Where(StudentInfo.__phoneid == info.Id));
}
}
{
public static List<StudentInfo> Students(this SchoolInfo info)
{
return DBFactory.dbStudent.SelectToIList(DBFactory.dbStudent.GetSelectSqlSection().Where(StudentInfo.__schoolid == info.Id));
}
}
public static class StudentExtensionMethods
{
public static SchoolInfo School(this StudentInfo info)
{
return DBFactory.dbSchool.SelectToEntity(info.Schoolid);
}
public static PhoneInfo Phone(this StudentInfo info)
{
return DBFactory.dbPhone.SelectToEntity(info.Phoneid);
}
}
public static class PhoneExtensionMethods
{
public static StudentInfo Student(this PhoneInfo info)
{
return DBFactory.dbStudent.SelectToEntity(DBFactory.dbStudent.GetSelectSqlSection().Where(StudentInfo.__phoneid == info.Id));
}
}
PhoneInfo ph = new PhoneInfo();
ph.Name = 34234234;
DBFactory.dbPhone.Save(ph);
SchoolInfo sch = new SchoolInfo();
sch.Name = "中山";
DBFactory.dbSchool.Save(sch);
StudentInfo stu = new StudentInfo();
stu.Name = "ada";
stu.Phoneid = 2;
stu.Schoolid = 1;
DBFactory.dbStudent.Save(stu);
SchoolInfo sc = DBFactory.dbSchool.SelectToEntity(1);
foreach (var item in sc.Students())
{
Console.WriteLine(item.Name);
}
StudentInfo st = DBFactory.dbStudent.SelectToEntity(1);
Console.WriteLine(st.Phone().Name);
Console.WriteLine(st.School().Name);
PhoneInfo p1 = DBFactory.dbPhone.SelectToEntity(2);
Console.WriteLine(p1.Student().Name);
ph.Name = 34234234;
DBFactory.dbPhone.Save(ph);
SchoolInfo sch = new SchoolInfo();
sch.Name = "中山";
DBFactory.dbSchool.Save(sch);
StudentInfo stu = new StudentInfo();
stu.Name = "ada";
stu.Phoneid = 2;
stu.Schoolid = 1;
DBFactory.dbStudent.Save(stu);
SchoolInfo sc = DBFactory.dbSchool.SelectToEntity(1);
foreach (var item in sc.Students())
{
Console.WriteLine(item.Name);
}
StudentInfo st = DBFactory.dbStudent.SelectToEntity(1);
Console.WriteLine(st.Phone().Name);
Console.WriteLine(st.School().Name);
PhoneInfo p1 = DBFactory.dbPhone.SelectToEntity(2);
Console.WriteLine(p1.Student().Name);
以上使用类库为最新发布的NSunV
实例下载:NSunORM实例(内附数据库文件)
类库下载:核心类库(NSun1.5.2)