不就是把一个表当一个实体类操作么? 针对面试题,选出脑海中以前的想法: public interface ITableOperator { public SqlDataReader ISelect(xxx....){} public int IUpdate(xxxx.....){} public int IInsert(xxxx.....){} public int IDelete(xxxx....){} }
// Model using System; using System.Data; using System.Configuration;/// <summary> /// Student 实体类。 /// </summary> public class Student { private int _id; private string _firstName; private string _lastName; private string _email; // ... public Student() { // // TODO: Add constructor logic here // } public Student(int id) : this() { this._id = id; } public Student(int id, string firstName, string lastName) : this(id) { this._firstName = firstName; this._lastName = lastName; } public int ID { get { return _id;} set { _id = value; } } public string FirstName { get { return _firstName; } set { _firstName =value; } } public string LastName { get { return _lastName; } set { _lastName = value; } } public string Email { get { return _email; } set { _email = value; } } // ... }// BLL using System; using System.Data; using System.Collections.Generic; using System.Configuration;/// <summary> /// Student 业务逻辑类 /// </summary> public class StudentSys { static StudentDb dal = new StudentDb(); public StudentSys() { // // TODO: Add constructor logic here // } public void CreateStudent(Student student) { dal.CreateStudent(student); } public void UpdateStudent(Student student) { bool success = dal.UpdateStudent(student); // ... } public void DeleteStudent(int id) { bool success = dal.DeleteStudent(id); } public Student GetStudent(int id) { return dal.GetStudent(id); } public IList<Student> GetStudent() { return dal.GetStudent(); } }// DAL using System; using System.Data; using System.Collections.Generic; using System.Configuration;/// <summary> /// Student 业务数据类 /// </summary> public class StudentDb { public StudentDb() { // // TODO: Add constructor logic here // } public void CreateStudent(Student student) { // Insert a Student into db by ADO.NET // ... } public bool UpdateStudent(Student student) { // Update a Student by ADO.NET // ... // return true; return false; } public bool DeleteStudent(int id) { // Delete a Student with the specified ID // ... // return true; return false; } public Student GetStudent(int id) { // Retrieve a Student Info with the specified ID // ... return null; } public IList<Student> GetStudent() { // Retrieve all Students // ... return new List<Student>(); } }
实体层:新建一个Student类,具体有ID属性、名字等
逻辑层:Student类,具体有方法:Insert( Model.Student )等
数据层就不用我说了,具体实现逻辑层的相关东东
表示层就只接调用逻辑层的方法和检查数据正确性就行了。
针对面试题,选出脑海中以前的想法:
public interface ITableOperator
{
public SqlDataReader ISelect(xxx....){}
public int IUpdate(xxxx.....){}
public int IInsert(xxxx.....){}
public int IDelete(xxxx....){}
}
动软.Net代码自动生成器
下载一个,然后自己生成.
M:StudentEntities实体类{id,name,sex…}和数据库表结构字段一一对应
V:没什么说的,页面表现形式,自定义
C:DataModule数据模型控制类,StudentCtrl对应实体有相应的程序逻辑操作类,可以包含StudentInsertUpdateDelete( Entities.Student,操作类型枚举(增,删,改) )
另外,还应该有一层,数据库通用访问类,做作数据库访问接口调用。
大至就是这些吧...
数据访问:Dal
业务层:Bussiness
视图层:xxx.aspx
Dal层代码段:
sqlconnectionString conn=new sqlconnectionString("连接字符串");
DataTable ExecuteQuery(strig sql)
{
using(sqlDataAdpter sda=new sqlDataAdpter (sql,conn))
{
using(Datatable dt =new DataTable())
{
sda.EucuteQuery();
sda.fill(dt);
retuen dt;
}
}
}
bool ExecuteNonQuery(string sql)
{
using(sqlcommand cmd=new sqlcommand())
{
cmd.commandText=sql;
cmd.connection=conn;
conn.open(0;
try
{
cmd.ExcuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
conn.close();
}
}
}Business层:
dal da=new dal();//也可以改单例调用
Datatable select()
{
return dal.ExcuteQuery("SQL select语句");
}
bool insert()
{
return ExcuteNonQuery("SQL insert语句");
}
bool update(string sql)
{
return ExcuteNonQuery("SQL update语句");
}
bool del(string sql)
{
return ExcuteNonQuery("SQL delete语句");
}xxx.aspx:
business bis=new business();
要返回数据的事件里:
Dataview1.datasource= bis.select();要添加数据的事件里:
if(bis.insert());
{
添加正确的提示;
}
else
{
添加错误的提示;
}
要修改数据的事件里:
if(bis.update());
{
修改正确的提示;
}
else
{
修改错误的提示;
}要删除数据的事件里:
if(bis.insert());
{
删除正确的提示;
}
else
{
删除错误的提示;
}that's all,good luck
顺便问一下,刚才那位用codesmith的
codesmith生成的nettiers的结构运行流程是什么?
我急着要用它做个项目,帮帮忙,谢谢了
啧啧
using System;
using System.Data;
using System.Configuration;/// <summary>
/// Student 实体类。
/// </summary>
public class Student
{
private int _id;
private string _firstName;
private string _lastName;
private string _email;
// ... public Student()
{
//
// TODO: Add constructor logic here
//
} public Student(int id)
: this()
{
this._id = id;
} public Student(int id, string firstName, string lastName)
: this(id)
{
this._firstName = firstName;
this._lastName = lastName;
} public int ID
{
get { return _id;}
set { _id = value; }
} public string FirstName
{
get { return _firstName; }
set { _firstName =value; }
} public string LastName
{
get { return _lastName; }
set { _lastName = value; }
} public string Email
{
get { return _email; }
set { _email = value; }
}
// ...
}// BLL
using System;
using System.Data;
using System.Collections.Generic;
using System.Configuration;/// <summary>
/// Student 业务逻辑类
/// </summary>
public class StudentSys
{
static StudentDb dal = new StudentDb(); public StudentSys()
{
//
// TODO: Add constructor logic here
//
} public void CreateStudent(Student student)
{
dal.CreateStudent(student);
} public void UpdateStudent(Student student)
{
bool success = dal.UpdateStudent(student);
// ...
} public void DeleteStudent(int id)
{
bool success = dal.DeleteStudent(id);
} public Student GetStudent(int id)
{
return dal.GetStudent(id);
} public IList<Student> GetStudent()
{
return dal.GetStudent();
}
}// DAL
using System;
using System.Data;
using System.Collections.Generic;
using System.Configuration;/// <summary>
/// Student 业务数据类
/// </summary>
public class StudentDb
{
public StudentDb()
{
//
// TODO: Add constructor logic here
//
} public void CreateStudent(Student student)
{
// Insert a Student into db by ADO.NET
// ...
} public bool UpdateStudent(Student student)
{
// Update a Student by ADO.NET
// ...
// return true;
return false;
} public bool DeleteStudent(int id)
{
// Delete a Student with the specified ID
// ...
// return true;
return false;
} public Student GetStudent(int id)
{
// Retrieve a Student Info with the specified ID
// ...
return null;
} public IList<Student> GetStudent()
{
// Retrieve all Students
// ...
return new List<Student>();
}
}
<head runat="server">
<title>Student List</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1">
<Columns>
<asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
<asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
<asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetStudent"
TypeName="StudentSys"></asp:ObjectDataSource>
</div>
</form>
</body>
</html>