.Net 三层结构
谁有 .Net 三层结构的 教程 给小弟一个 万分感谢哦 = =! --------------------编程问答-------------------- http://blog.myspace.cn/e/404814826.htmhttp://www.360doc.com/relevant/0/4/6/1/14641640_more.shtml
http://zhidao.baidu.com/question/44274432.html --------------------编程问答-------------------- 木有 --------------------编程问答-------------------- 下源码看、 --------------------编程问答-------------------- 找一个项目看一下。。。 --------------------编程问答--------------------
没有教程什么的么· 初学 不太明白· --------------------编程问答-------------------- 要死死在三层上 --------------------编程问答--------------------
、。。。。。 迷茫额·· --------------------编程问答-------------------- petshop
http://zzk.cnblogs.com/s?w=%E4%B8%89%E5%B1%82 --------------------编程问答-------------------- 网上很多东西! --------------------编程问答-------------------- petshop开源的 --------------------编程问答-------------------- 模型层,
数据访问层,
业务逻辑层,
数据层引用模型层,业务层引用数据层和模型层 --------------------编程问答-------------------- 最简单的一个
Model层
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CIPACETool.MODEL
{
public class User
{
#region public property accessor
public int UserID
{
get;
set;
}
public string Login
{
get;
set;
}
public string FirstName
{
get;
set;
}
public string LastName
{
get;
set;
}
public string Password
{
get;
set;
}
public bool IsActive
{
get;
set;
}
public static User Current
{
//get
//{
//}
//set
//{
// this.current = value;
//}
get;
set;
}
#endregion
}
}
DAL层
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CIPACETool.MODEL;
using System.Data;
using CIPACE.DatabaseUtility;
using System.Data.SqlClient;
namespace CIPACETool.DAL
{
public class User
{
#region default constructor
/// <summary>
/// default constructor
/// </summary>
public User()
{ }
#endregion
#region GetUser(string userId)
/// <summary>
/// according to the give userid,return User
/// </summary>
/// <param name="userId">userid</param>
/// <returns>return user</returns>
public static DataTable GetUser(string userId)
{
SQLUtil db = new SQLUtil();
db.AddParameter("@UserID",Convert.ToInt32(userId));
// DataSet ds = db.ExecuteDataSet("Cip_UserLogs_Get", SQLUtil.DatabaseType.CIPACE);
DataSet ds = db.ExecuteDataSet("CIPTool_GetUserByuserId", 1);
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0];
}
return null;
}
#endregion
#region GetUserMenu(string userId)
/// <summary>
/// return menus associate to user
/// </summary>
/// <param name="userId">userid</param>
/// <returns>return menus collection associate to user</returns>
public static DataTable GetUserMenu(string userId)
{
SQLUtil db = new SQLUtil();
db.AddParameter("@UserID", Convert.ToInt32(userId));
DataSet ds = db.ExecuteDataSet("CIPTool_GetUserByuserId", 1);
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0];
}
return null;
}
#endregion
#region IsValidUser(string userId,string password)
/// <summary>
/// judge gived userid and password is valid
/// </summary>
/// <param name="userId">userid</param>
/// <param name="password">password</param>
/// <returns>true:valid;false:invalid</returns>
public static bool IsValidUser(string userId, string password)
{
bool isValid = false;
SQLUtil db = new SQLUtil();
db.AddParameter("@UserId",Convert.ToInt32(userId));
db.AddParameter("@Password",password);
DataTable dt = db.ExecuteDataSet("CIPTool_CheckUserValid", 1).Tables[0];
if (dt.Rows.Count > 0)
isValid = true;
return isValid;
}
#endregion
}
}
BLL层
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CIPACETool.MODEL;
using CIPACETool.DAL;
using CIPACE.DatabaseUtility;
using System.Data;
using System.Collections;
using ShortModel = CIPACETool.MODEL;
using ShortDal = CIPACETool.DAL;
namespace CIPACETool.BLL
{
public class User
{
#region GetUser(string userId)
/// <summary>
/// return User with gived userid
/// </summary>
/// <param name="userId">userid</param>
/// <returns>return User with gived userid</returns>
public static CIPACETool.MODEL.User GetUser(string userId)
{
CIPACETool.MODEL.User user = new CIPACETool.MODEL.User();
DataTable dt = CIPACETool.DAL.User.GetUser(userId);
if (dt.Rows.Count > 0)
{
DataRowView drv = dt.DefaultView[0];
user.UserID = Convert.ToInt32(drv["UserID"]);
user.Login = drv["Login"].ToString();
user.FirstName = drv["FirstName"].ToString();
user.LastName = drv["LastName"].ToString();
user.Password = drv["Password"].ToString();
user.IsActive = Convert.ToInt32(dt.Rows[0]["IsActive"]) == 1 ? true : false;
return user;
}
return null;
}
#endregion
#region IsValidUser(string userId,string password)
/// <summary>
/// judge gived userid and password is valid
/// </summary>
/// <param name="userId">userid</param>
/// <param name="password">password</param>
/// <returns>true:valid;false:invalid</returns>
public static bool IsValidUser(string userId, string password)
{
return CIPACETool.DAL.User.IsValidUser(userId,password);
}
#endregion
#region GetUserMenu(string userId)
/// <summary>
/// get menus associate to userid
/// </summary>
/// <param name="userId">userid</param>
/// <returns>get menus associate to userid</returns>
public static CIPACETool.MODEL.MenuItem GetUserMenu(string userId)
{
ShortModel.MenuItem mi = new ShortModel.MenuItem();
DataTable dt=ShortDal.User.GetUserMenu(userId);
if (dt.Rows.Count > 0)
{
DataRowView drv = dt.DefaultView[0];
mi.MenuItemId = Convert.ToInt32(drv["MenuItemId"]);
mi.FunctionID = Convert.ToInt32(drv["FunctionID"]);
mi.IsActive = Convert.ToInt32(drv["IsActive"]) == 1 ? true : false;
mi.ParentMenuItemId = Convert.ToInt32(drv["ParentMenuItemId"]);
mi.SortOrder = Convert.ToInt32(drv["SortOrder"]);
mi.Title = drv["Title"].ToString();
mi.Url = drv["Url"].ToString();
return mi;
}
else
return null;
}
#endregion
public static List<CIPACETool.MODEL.MenuItem> GetUserMenuCollection(string userId)
{
List<CIPACETool.MODEL.MenuItem> lMenuItemList = new List<CIPACETool.MODEL.MenuItem>();
return null;
}
}
}
数据库类
--------------------编程问答-------------------- 上面是最简单的一个简单三层架构 --------------------编程问答-------------------- http://download.csdn.net/source/2623660三层项目实例 --------------------编程问答-------------------- www.51aspx.com有很多例子 --------------------编程问答--------------------
谢谢.
--------------------编程问答-------------------- 下一个动软的三层生成器、还写个毛 头大 。直接生成得了 又不从事什么科研 只要完成功能就行!
补充:.NET技术 , ASP.NET