LINQ入门之访问数据库(插,删,改)[转]
发布: 2009-3-31 13:03 | 作者: softworker | 来源: 青软培训-踏踏实实育人-勤勤恳恳奉献
以博客园的系统为例子,既然称linq to sql为一个orm框架,orm,对象-关系 映射,既然o在前关系在后,说明o为重,关系是根据o得来的,那么我们就先新建一些entity object吧。在一个博客系统里最常见的就是user,blog,post。
一个用户有且仅有一个博客,而一个博客可以有零篇或者多篇博客文章。根据这个描述我们来建立entity:
step 1 建立实体对象
public class user
<img id="codehighlighter1_55_715_open_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_55_715_open_text').style.display='none'; document.getelementbyid('codehighlighter1_55_715_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_55_715_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" align="top" alt="" /><img id="codehighlighter1_55_715_closed_image" style="display: inline" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_55_715_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_55_715_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_55_715_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" align="top" alt="" />
/// <summary>
/// 用户标识
/// </summary>
<img id="codehighlighter1_141_154_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_141_154_open_text').style.display='none'; document.getelementbyid('codehighlighter1_141_154_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_141_154_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_141_154_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_141_154_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_141_154_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_141_154_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public int id { get; set; }
<img id="codehighlighter1_163_247_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_163_247_open_text').style.display='none'; document.getelementbyid('codehighlighter1_163_247_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_163_247_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_163_247_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_163_247_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_163_247_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_163_247_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 该用户对应的博客,
/// 一个用户有且仅有一个博客
/// </summary>
<img id="codehighlighter1_272_285_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_272_285_open_text').style.display='none'; document.getelementbyid('codehighlighter1_272_285_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_272_285_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_272_285_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_272_285_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_272_285_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_272_285_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public blog blog { get; set; }
<img id="codehighlighter1_294_347_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_294_347_open_text').style.display='none'; document.getelementbyid('codehighlighter1_294_347_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_294_347_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_294_347_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_294_347_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_294_347_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_294_347_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 用户名
/// </summary>
<img id="codehighlighter1_378_391_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_378_391_open_text').style.display='none'; document.getelementbyid('codehighlighter1_378_391_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_378_391_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_378_391_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_378_391_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_378_391_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_378_391_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public string username { get; set; }
<img id="codehighlighter1_400_452_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_400_452_open_text').style.display='none'; document.getelementbyid('codehighlighter1_400_452_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_400_452_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_400_452_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_400_452_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_400_452_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_400_452_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 密码
/// </summary>
<img id="codehighlighter1_483_496_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_483_496_open_text').style.display='none'; document.getelementbyid('codehighlighter1_483_496_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_483_496_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_483_496_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_483_496_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_483_496_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_483_496_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public string password { get; set; }
<img id="codehighlighter1_505_557_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_505_557_open_text').style.display='none'; document.getelementbyid('codehighlighter1_505_557_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_505_557_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_505_557_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_505_557_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_505_557_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_505_557_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 昵称
/// </summary>
<img id="codehighlighter1_588_601_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_588_601_open_text').style.display='none'; document.getelementbyid('codehighlighter1_588_601_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_588_601_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_588_601_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_588_601_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_588_601_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_588_601_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public string nickname { get; set; }
<img id="codehighlighter1_610_666_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_610_666_open_text').style.display='none'; document.getelementbyid('codehighlighter1_610_666_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_610_666_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_610_666_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_610_666_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_610_666_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_610_666_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 用户离开时间
/// </summary>
<img id="codehighlighter1_700_713_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_700_713_open_text').style.display='none'; document.getelementbyid('codehighlighter1_700_713_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_700_713_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_700_713_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_700_713_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_700_713_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_700_713_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public datetime leavetime { get; set; }
}

<img id="code_closed_image_084041" style="display: inline" onclick="this.style.display='none'; document.getelementbyid('code_closed_text_084041').style.display='none'; document.getelementbyid('code_open_image_084041').style.display='inline'; document.getelementbyid('code_open_text_084041').style.display='inline';" height="16" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" width="11" align="top" alt="" /><img id="code_open_image_084041" style="display: none" onclick="this.style.display='none'; document.getelementbyid('code_open_text_084041').style.display='none'; getelementbyid('code_closed_image_084041').style.display='inline'; getelementbyid('code_closed_text_084041').style.display='inline';" height="16" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" width="11" align="top" alt="" />user <summary>
/// 用户类
/// </summary>
<img id="code_closed_image_084114" style="display: inline" onclick="this.style.display='none'; document.getelementbyid('code_closed_text_084114').style.display='none'; document.getelementbyid('code_open_image_084114').style.display='inline'; document.getelementbyid('code_open_text_084114').style.display='inline';" height="16" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" width="11" align="top" alt="" /><img id="code_open_image_084114" style="display: none" onclick="this.style.display='none'; document.getelementbyid('code_open_text_084114').style.display='none'; getelementbyid('code_closed_image_084114').style.display='inline'; getelementbyid('code_closed_text_084114').style.display='inline';" height="16" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" width="11" align="top" alt="" />blog/// <summary>
/// 博客类
/// </summary>
public class blog
<img id="codehighlighter1_71_614_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_71_614_open_text').style.display='none'; document.getelementbyid('codehighlighter1_71_614_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_71_614_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" align="top" alt="" /><img id="codehighlighter1_71_614_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_71_614_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_71_614_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_71_614_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" align="top" alt="" /> {
<img id="codehighlighter1_81_135_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_81_135_open_text').style.display='none'; document.getelementbyid('codehighlighter1_81_135_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_81_135_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_81_135_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_81_135_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_81_135_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_81_135_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 博客标识
/// </summary>
<img id="codehighlighter1_157_170_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_157_170_open_text').style.display='none'; document.getelementbyid('codehighlighter1_157_170_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_157_170_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_157_170_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_157_170_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_157_170_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_157_170_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public int id { get; set; }
<img id="codehighlighter1_179_240_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_179_240_open_text').style.display='none'; document.getelementbyid('codehighlighter1_179_240_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_179_240_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_179_240_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_179_240_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_179_240_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_179_240_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 用户标识,和用户相关联
/// </summary>
<img id="codehighlighter1_266_279_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_266_279_open_text').style.display='none'; document.getelementbyid('codehighlighter1_266_279_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_266_279_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_266_279_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_266_279_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_266_279_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_266_279_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public int userid { get; set; }
<img id="codehighlighter1_288_344_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_288_344_open_text').style.display='none'; document.getelementbyid('codehighlighter1_288_344_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_288_344_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_288_344_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_288_344_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_288_344_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_288_344_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 博客的中文名
/// </summary>
<img id="codehighlighter1_371_384_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_371_384_open_text').style.display='none'; document.getelementbyid('codehighlighter1_371_384_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_371_384_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_371_384_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_371_384_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_371_384_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_371_384_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public string name { get; set; }
<img id="codehighlighter1_393_447_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_393_447_open_text').style.display='none'; document.getelementbyid('codehighlighter1_393_447_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_393_447_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_393_447_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_393_447_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_393_447_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_393_447_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 创建时间
/// </summary>
<img id="codehighlighter1_482_495_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_482_495_open_text').style.display='none'; document.getelementbyid('codehighlighter1_482_495_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_482_495_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_482_495_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_482_495_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_482_495_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_482_495_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public datetime createdate { get; set; }
<img id="codehighlighter1_504_566_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_504_566_open_text').style.display='none'; document.getelementbyid('codehighlighter1_504_566_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_504_566_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_504_566_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_504_566_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_504_566_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_504_566_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 一个博客有零篇或多篇文章
/// </summary>
<img id="codehighlighter1_599_612_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_599_612_open_text').style.display='none'; document.getelementbyid('codehighlighter1_599_612_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_599_612_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_599_612_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_599_612_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_599_612_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_599_612_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public ilist
posts { get; set; }
}
<img id="code_closed_image_084144" style="display: inline" onclick="this.style.display='none'; document.getelementbyid('code_closed_text_084144').style.display='none'; document.getelementbyid('code_open_image_084144').style.display='inline'; document.getelementbyid('code_open_text_084144').style.display='inline';" height="16" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" width="11" align="top" alt="" /><img id="code_open_image_084144" style="display: none" onclick="this.style.display='none'; document.getelementbyid('code_open_text_084144').style.display='none'; getelementbyid('code_closed_image_084144').style.display='inline'; getelementbyid('code_closed_text_084144').style.display='inline';" height="16" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" width="11" align="top" alt="" />code/// <summary>
/// 博客文章类
/// </summary>
public class post
<img id="codehighlighter1_57_577_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_57_577_open_text').style.display='none'; document.getelementbyid('codehighlighter1_57_577_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_57_577_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" align="top" alt="" /><img id="codehighlighter1_57_577_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_57_577_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_57_577_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_57_577_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" align="top" alt="" />{
<img id="codehighlighter1_67_121_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_67_121_open_text').style.display='none'; document.getelementbyid('codehighlighter1_67_121_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_67_121_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_67_121_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_67_121_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_67_121_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_67_121_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 文章id
/// </summary>
<img id="codehighlighter1_143_156_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_143_156_open_text').style.display='none'; document.getelementbyid('codehighlighter1_143_156_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_143_156_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_143_156_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_143_156_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_143_156_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_143_156_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public int id { get; set; }
<img id="codehighlighter1_165_222_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_165_222_open_text').style.display='none'; document.getelementbyid('codehighlighter1_165_222_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_165_222_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_165_222_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_165_222_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_165_222_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_165_222_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 文章从属的博客
/// </summary>
<img id="codehighlighter1_248_261_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_248_261_open_text').style.display='none'; document.getelementbyid('codehighlighter1_248_261_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_248_261_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_248_261_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_248_261_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_248_261_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_248_261_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public int blogid { get; set; }
<img id="codehighlighter1_270_322_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_270_322_open_text').style.display='none'; document.getelementbyid('codehighlighter1_270_322_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_270_322_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_270_322_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_270_322_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_270_322_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_270_322_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 标题
/// </summary>
<img id="codehighlighter1_350_363_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_350_363_open_text').style.display='none'; document.getelementbyid('codehighlighter1_350_363_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_350_363_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_350_363_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_350_363_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_350_363_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_350_363_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public string title { get; set; }
<img id="codehighlighter1_372_424_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_372_424_open_text').style.display='none'; document.getelementbyid('codehighlighter1_372_424_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_372_424_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_372_424_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_372_424_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_372_424_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_372_424_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 内容
/// </summary>
<img id="codehighlighter1_451_464_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_451_464_open_text').style.display='none'; document.getelementbyid('codehighlighter1_451_464_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_451_464_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_451_464_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_451_464_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_451_464_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_451_464_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public string body { get; set; }
<img id="codehighlighter1_473_527_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_473_527_open_text').style.display='none'; document.getelementbyid('codehighlighter1_473_527_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_473_527_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_473_527_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_473_527_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_473_527_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_473_527_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 发表时间
/// </summary>
<img id="codehighlighter1_562_575_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_562_575_open_text').style.display='none'; document.getelementbyid('codehighlighter1_562_575_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_562_575_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_562_575_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_562_575_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_562_575_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_562_575_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public datetime createdate { get; set; }
}
我们先不要谈论这个设计是否合理,也不要谈论这三个实体是贫血模型还是充血模型。
对象建立好了,我们来建设数据库表吧:users表,blogs表,posts表(为什么表都用复数?从rails里学过来的,activerecord模式里,表里每条记录都对应着一个对象,所以表用复数表示,这是一种约定)
step 2:创建数据库表
users表:
<img height="118" alt="" src="http://images.cnblogs.com/cnblogs_com/yuyijq/howdoi/howdoi_1.jpg" width="391" border="0" />
blogs表:
<img height="119" alt="" src="http://images.cnblogs.com/cnblogs_com/yuyijq/howdoi/howdoi_2.jpg" width="366" border="0" />
posts表:
<img height="139" alt="" src="http://images.cnblogs.com/cnblogs_com/yuyijq/howdoi/howdoi_3.jpg" width="367" border="0" />
我们注意到,用户类里的leavetime离开时间在数据库里并没有对应的字段,因为这个是用来临时记路用户离开离开博客园的时间的,这样可以用来做一些在线统计,所以无需持久化。
step 3:建立映射
对象也有了,关系也有了,那剩下的是什么?对,就是映射,我们怎样将对象映射到数据库表上?
我们从最简单的post开始吧:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->/// <summary>
/// 博客文章类
/// 这个类和数据库里的posts表对应,由于
/// 类名和表名不一样,所以需要显式的指明table特性的name属性
/// 如果是一致的则无需指明了
/// </summary>
[table(name="posts")]
public class post
{
/// <summary>
/// 文章id
/// 这个对应posts表里的postid
/// 这个字段还是一个主键,所以column特性的isprimarykey属性为true
/// </summary>
[column(name="postid",isprimarykey=true)]
public int id { get; set; }
/// <summary>
/// 文章从属的博客
/// 这个对应着表里的blogid,名字一样所以只需要加个column特性就可以了
/// 下面几个也是一样的意思
/// </summary>
[column]
public int blogid { get; set; }
/// <summary>
/// 标题
/// </summary>
[column]
public string title { get; set; }
/// <summary>
/// 内容
/// </summary>
[column]
public string body { get; set; }
/// <summary>
/// 发表时间
/// </summary>
[column]
public datetime createdate { get; set; }
}
仔细看看注释里面的说明,很简单吧,在类上面加table特性,属性上加column特性。
映射建完了,我们可以施加一些操作了。
在上一篇文章里介绍了,linq to sql的入口点是datacontext类,这个类主要做这么几件事情:
将我们用c#写的这个查询翻译成sql语句,当然也并不是他全权负责翻译工作。
执行查询
连接的管理,这样我们就不用写啥connection了啊,也不用担心数据库的连接和关闭的问题。
step 4:执行查询
那我们就首先实例化一个datacontext类吧(为了好测试,使用一个控制台程序):从这里可以看出,datacontext需要一个连接字符串,在datacontext里,我们打交道最多的就是gettable<tentity>()方法,这里的tentity就是我们上面的那个post了,带有映射的实体,这个方法返回一个table<tentity>对象:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->table<tentity> posts = dbcontext.gettable
();
实际上,table<tentity>实现了ienumerable<tentity>接口,那这里实际上是返回了一个ienumerable
系列,那我们可以对posts进行遍历了:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->foreach(var post in posts)
console.writeline(post.title);
实际上,如果光返回一个table<tentity>,而不在上面施加任何的操作,遍历的时候是返回整个表的数据,在上一篇我还提到,为了跟踪,我们最好将dbcontext.log给显示出来。如果你添加了下面这行代码:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->dbcontext.log = console.out;
(对于这行代码,如果你使用的是控制台程序,那么输出就会显示在命令窗口里,如果你用的是winform程序调试,那么输出会显示在vs的output窗口里)
那你将会从控制台里得到下面的东东:
<img height="121" alt="" src="http://images.cnblogs.com/cnblogs_com/yuyijq/howdoi/howdoi_4.jpg" width="648" border="0" />
这就是linq为你生成的sql语句,是不在是比你写的还标准啊,呵呵。
当然,我们常常做的肯定不是像上面这样的全查询,我们还要附加一些条件的。
上一篇还提到过:由于table<tentity>实现了ienumerable<tentity>接口,那么所有的查询表达式都可以在这里使用了,这样你先前在linq to objects里学到东西现在又有了新的用途了:
比如我们可以对blogid做筛选:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->var posts = from post in dbcontext.gettable
()
where post.blogid == 2
select post;
(ps:我在写linq语法的时候,因为linq的风格太像sql语句了,所以一些地方比如 ==我老写成=,而&&经常写成”and”,希望大家不要烦我这样的低级错误,呵呵)
看看这次生成的sql语句:

可以看到生成的sql语句对blogid做了筛选,而且值得庆祝的是,linq to sql为我们生成的sql语句还使用的是参数,她并不是仅仅将数值和语句组合在一起。关于使用参数而不是拼凑起来的sql语句的好处在这里啰嗦两句,主要有两点:<img height="125" alt="" src="http://images.cnblogs.com/cnblogs_com/yuyijq/howdoi/howdoi_6.jpg" width="657" border="0" />
面对这样的一个linq查询,linq to sql居然知道将它翻译成like子句,从上图倒数第二行最后中括号里面的东西可以看出,linq to sql还知道将传入的参数设置为y%,我不得不惊叹:太强大了。
但是不是所有的c#的方法都可以使用呢?答案是否定的。比如:我想对最后查出来的文章的创建时间做个格式化,居然报错了,说不支持这种“翻译”。那看来每次我们做查询的时候是要先try一下。
上面只是做了筛选的实例,你还可以去尝试一下排序和分组,这个和linq to objects里的用法是一样的,你可以到前面的文章里复习一下。
step 5:插入对象
本系列的文章到现在为止都是在介绍查询,难道linq to sql只能做查询么?不能向数据库添加数据?,肯定不是的:生成的sql语句:
<img height="147" alt="" src="http://images.cnblogs.com/cnblogs_com/yuyijq/howdoi/howdoi_7.jpg" width="637" border="0" />
一个简单的不能再简单的insert into语句,加上一条返回新插入记录的标识值的语句。
如果你按照本文所说的一步步往下来,在执行上面的插入的时候肯定会碰到异常,这是因为,id对应的数据表字段postid是该表的主键,你不应该在插入的时候赋值,有人说我实例化对象的时候确实没有给post的id属性赋值啊,但是.net会在后台为我们将id赋值为0,所以你要对映射对象做一下修改:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->[column(name="postid",isprimarykey=true,isdbgenerated=true)]
public int id { get; set; }
不仅仅数据表的主键要加这个属性,如果对于那些在数据库里设置了默认值的,你并不像用程序插入的时候,你也得使用,比如这里的createdate。
step 6:更新数据
可以插入肯定就可以更新了,下面就来看看如何更新呢:
做更新的时候,你首先得从数据库查询出该对象,然后对该对象的属性进行修改,最后更新到数据库:linq to sql也会自动的帮你生成update语句了。
有了插入,更新,查询就差一个delete curd就全了,对于delete更简单了,你只要调用table<tentity>的deleteonsubmit方法就行了,这里就不再详述。
注意:需添加
using system.data.linq.mapping;命名空间。
上面表post中body字段类型应该为vchar(50),在调试进行update表时发生异常,说类型不匹配。原因在找中....
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->var posts = from post in dbcontext.gettable
()
where post.blogid == 2
select post;
foreach (var post in posts)
post.blogid = 5;
dbcontext.submitchanges();
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->table
posts = dbcontext.gettable
();
//先实例化一个新的要插入的对象
post post = new post();
post.blogid = 2;
post.title = "test";
post.body = "test,test,test,test";
post.createdate = datetime.now;
//调用table<tentity>的insertonsubmit方法
posts.insertonsubmit(post);
//把改变提交到数据库,这个时候才真正执行了
dbcontext.submitchanges();
//提交修改后,你就可以查询新插入的post的id了
console.writeline(post.id);
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->var posts = from post in dbcontext.gettable
()
where post.title.startswith("y")
select post.createdate.tostring("yyyy-mm-dd");
这样可以有效的sql注入攻击,这个hack手段曾经让很多网站吃尽了苦头。
使用参数可以利用sql server对sql语句的缓存和预编译作用,因为使用参数的sql语句可能多次用到,而拼凑起来的sql语句却和特定的查询有关。
这样的筛选还不能体现出linq的智能了,请再看这个:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->var posts = from post in dbcontext.gettable
()
where post.title.startswith("y")
select post;
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->datacontext dbcontext = new datacontext(configurationmanager.connectionstrings["cnblogs"].connectionstring);
一个用户有且仅有一个博客,而一个博客可以有零篇或者多篇博客文章。根据这个描述我们来建立entity:
step 1 建立实体对象
public class user<img id="codehighlighter1_55_715_open_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_55_715_open_text').style.display='none'; document.getelementbyid('codehighlighter1_55_715_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_55_715_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" align="top" alt="" /><img id="codehighlighter1_55_715_closed_image" style="display: inline" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_55_715_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_55_715_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_55_715_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" align="top" alt="" />
/// <summary>
/// 用户标识
/// </summary><img id="codehighlighter1_141_154_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_141_154_open_text').style.display='none'; document.getelementbyid('codehighlighter1_141_154_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_141_154_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_141_154_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_141_154_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_141_154_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_141_154_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public int id { get; set; }
<img id="codehighlighter1_163_247_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_163_247_open_text').style.display='none'; document.getelementbyid('codehighlighter1_163_247_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_163_247_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_163_247_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_163_247_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_163_247_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_163_247_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 该用户对应的博客,
/// 一个用户有且仅有一个博客
/// </summary><img id="codehighlighter1_272_285_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_272_285_open_text').style.display='none'; document.getelementbyid('codehighlighter1_272_285_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_272_285_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_272_285_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_272_285_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_272_285_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_272_285_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public blog blog { get; set; }
<img id="codehighlighter1_294_347_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_294_347_open_text').style.display='none'; document.getelementbyid('codehighlighter1_294_347_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_294_347_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_294_347_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_294_347_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_294_347_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_294_347_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 用户名
/// </summary><img id="codehighlighter1_378_391_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_378_391_open_text').style.display='none'; document.getelementbyid('codehighlighter1_378_391_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_378_391_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_378_391_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_378_391_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_378_391_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_378_391_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public string username { get; set; }
<img id="codehighlighter1_400_452_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_400_452_open_text').style.display='none'; document.getelementbyid('codehighlighter1_400_452_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_400_452_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_400_452_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_400_452_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_400_452_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_400_452_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 密码
/// </summary><img id="codehighlighter1_483_496_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_483_496_open_text').style.display='none'; document.getelementbyid('codehighlighter1_483_496_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_483_496_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_483_496_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_483_496_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_483_496_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_483_496_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public string password { get; set; }
<img id="codehighlighter1_505_557_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_505_557_open_text').style.display='none'; document.getelementbyid('codehighlighter1_505_557_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_505_557_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_505_557_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_505_557_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_505_557_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_505_557_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 昵称
/// </summary><img id="codehighlighter1_588_601_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_588_601_open_text').style.display='none'; document.getelementbyid('codehighlighter1_588_601_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_588_601_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_588_601_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_588_601_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_588_601_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_588_601_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public string nickname { get; set; }
<img id="codehighlighter1_610_666_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_610_666_open_text').style.display='none'; document.getelementbyid('codehighlighter1_610_666_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_610_666_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_610_666_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_610_666_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_610_666_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_610_666_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 用户离开时间
/// </summary><img id="codehighlighter1_700_713_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_700_713_open_text').style.display='none'; document.getelementbyid('codehighlighter1_700_713_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_700_713_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_700_713_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_700_713_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_700_713_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_700_713_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public datetime leavetime { get; set; }
} 
<img id="code_closed_image_084041" style="display: inline" onclick="this.style.display='none'; document.getelementbyid('code_closed_text_084041').style.display='none'; document.getelementbyid('code_open_image_084041').style.display='inline'; document.getelementbyid('code_open_text_084041').style.display='inline';" height="16" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" width="11" align="top" alt="" /><img id="code_open_image_084041" style="display: none" onclick="this.style.display='none'; document.getelementbyid('code_open_text_084041').style.display='none'; getelementbyid('code_closed_image_084041').style.display='inline'; getelementbyid('code_closed_text_084041').style.display='inline';" height="16" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" width="11" align="top" alt="" />user <summary>
/// 用户类
/// </summary><img id="code_closed_image_084114" style="display: inline" onclick="this.style.display='none'; document.getelementbyid('code_closed_text_084114').style.display='none'; document.getelementbyid('code_open_image_084114').style.display='inline'; document.getelementbyid('code_open_text_084114').style.display='inline';" height="16" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" width="11" align="top" alt="" /><img id="code_open_image_084114" style="display: none" onclick="this.style.display='none'; document.getelementbyid('code_open_text_084114').style.display='none'; getelementbyid('code_closed_image_084114').style.display='inline'; getelementbyid('code_closed_text_084114').style.display='inline';" height="16" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" width="11" align="top" alt="" />blog/// <summary>
/// 博客类
/// </summary>
public class blog<img id="codehighlighter1_71_614_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_71_614_open_text').style.display='none'; document.getelementbyid('codehighlighter1_71_614_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_71_614_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" align="top" alt="" /><img id="codehighlighter1_71_614_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_71_614_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_71_614_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_71_614_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" align="top" alt="" /> {
<img id="codehighlighter1_81_135_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_81_135_open_text').style.display='none'; document.getelementbyid('codehighlighter1_81_135_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_81_135_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_81_135_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_81_135_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_81_135_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_81_135_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 博客标识
/// </summary><img id="codehighlighter1_157_170_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_157_170_open_text').style.display='none'; document.getelementbyid('codehighlighter1_157_170_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_157_170_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_157_170_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_157_170_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_157_170_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_157_170_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public int id { get; set; }
<img id="codehighlighter1_179_240_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_179_240_open_text').style.display='none'; document.getelementbyid('codehighlighter1_179_240_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_179_240_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_179_240_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_179_240_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_179_240_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_179_240_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 用户标识,和用户相关联
/// </summary><img id="codehighlighter1_266_279_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_266_279_open_text').style.display='none'; document.getelementbyid('codehighlighter1_266_279_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_266_279_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_266_279_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_266_279_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_266_279_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_266_279_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public int userid { get; set; }
<img id="codehighlighter1_288_344_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_288_344_open_text').style.display='none'; document.getelementbyid('codehighlighter1_288_344_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_288_344_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_288_344_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_288_344_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_288_344_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_288_344_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 博客的中文名
/// </summary><img id="codehighlighter1_371_384_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_371_384_open_text').style.display='none'; document.getelementbyid('codehighlighter1_371_384_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_371_384_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_371_384_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_371_384_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_371_384_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_371_384_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public string name { get; set; }
<img id="codehighlighter1_393_447_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_393_447_open_text').style.display='none'; document.getelementbyid('codehighlighter1_393_447_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_393_447_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_393_447_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_393_447_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_393_447_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_393_447_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 创建时间
/// </summary><img id="codehighlighter1_482_495_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_482_495_open_text').style.display='none'; document.getelementbyid('codehighlighter1_482_495_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_482_495_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_482_495_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_482_495_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_482_495_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_482_495_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public datetime createdate { get; set; }
<img id="codehighlighter1_504_566_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_504_566_open_text').style.display='none'; document.getelementbyid('codehighlighter1_504_566_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_504_566_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_504_566_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_504_566_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_504_566_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_504_566_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 一个博客有零篇或多篇文章
/// </summary><img id="codehighlighter1_599_612_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_599_612_open_text').style.display='none'; document.getelementbyid('codehighlighter1_599_612_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_599_612_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_599_612_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_599_612_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_599_612_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_599_612_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public ilist
posts { get; set; }
}<img id="code_closed_image_084144" style="display: inline" onclick="this.style.display='none'; document.getelementbyid('code_closed_text_084144').style.display='none'; document.getelementbyid('code_open_image_084144').style.display='inline'; document.getelementbyid('code_open_text_084144').style.display='inline';" height="16" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" width="11" align="top" alt="" /><img id="code_open_image_084144" style="display: none" onclick="this.style.display='none'; document.getelementbyid('code_open_text_084144').style.display='none'; getelementbyid('code_closed_image_084144').style.display='inline'; getelementbyid('code_closed_text_084144').style.display='inline';" height="16" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" width="11" align="top" alt="" />code/// <summary>
/// 博客文章类
/// </summary>
public class post<img id="codehighlighter1_57_577_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_57_577_open_text').style.display='none'; document.getelementbyid('codehighlighter1_57_577_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_57_577_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" align="top" alt="" /><img id="codehighlighter1_57_577_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_57_577_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_57_577_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_57_577_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" align="top" alt="" />{
<img id="codehighlighter1_67_121_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_67_121_open_text').style.display='none'; document.getelementbyid('codehighlighter1_67_121_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_67_121_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_67_121_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_67_121_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_67_121_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_67_121_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 文章id
/// </summary><img id="codehighlighter1_143_156_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_143_156_open_text').style.display='none'; document.getelementbyid('codehighlighter1_143_156_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_143_156_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_143_156_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_143_156_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_143_156_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_143_156_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public int id { get; set; }
<img id="codehighlighter1_165_222_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_165_222_open_text').style.display='none'; document.getelementbyid('codehighlighter1_165_222_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_165_222_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_165_222_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_165_222_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_165_222_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_165_222_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 文章从属的博客
/// </summary><img id="codehighlighter1_248_261_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_248_261_open_text').style.display='none'; document.getelementbyid('codehighlighter1_248_261_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_248_261_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_248_261_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_248_261_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_248_261_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_248_261_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public int blogid { get; set; }
<img id="codehighlighter1_270_322_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_270_322_open_text').style.display='none'; document.getelementbyid('codehighlighter1_270_322_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_270_322_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_270_322_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_270_322_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_270_322_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_270_322_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 标题
/// </summary><img id="codehighlighter1_350_363_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_350_363_open_text').style.display='none'; document.getelementbyid('codehighlighter1_350_363_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_350_363_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_350_363_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_350_363_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_350_363_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_350_363_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public string title { get; set; }
<img id="codehighlighter1_372_424_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_372_424_open_text').style.display='none'; document.getelementbyid('codehighlighter1_372_424_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_372_424_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_372_424_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_372_424_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_372_424_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_372_424_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 内容
/// </summary><img id="codehighlighter1_451_464_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_451_464_open_text').style.display='none'; document.getelementbyid('codehighlighter1_451_464_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_451_464_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_451_464_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_451_464_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_451_464_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_451_464_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public string body { get; set; }
<img id="codehighlighter1_473_527_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_473_527_open_text').style.display='none'; document.getelementbyid('codehighlighter1_473_527_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_473_527_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_473_527_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_473_527_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_473_527_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_473_527_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> /// <summary>
/// 发表时间
/// </summary><img id="codehighlighter1_562_575_open_image" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_562_575_open_text').style.display='none'; document.getelementbyid('codehighlighter1_562_575_closed_image').style.display='inline'; document.getelementbyid('codehighlighter1_562_575_closed_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/expandedsubblockstart.gif" align="top" alt="" /><img id="codehighlighter1_562_575_closed_image" style="display: none" onclick="this.style.display='none'; document.getelementbyid('codehighlighter1_562_575_closed_text').style.display='none'; document.getelementbyid('codehighlighter1_562_575_open_image').style.display='inline'; document.getelementbyid('codehighlighter1_562_575_open_text').style.display='inline';" src="http://www.cnblogs.com/images/outliningindicators/contractedsubblock.gif" align="top" alt="" /> public datetime createdate { get; set; }
}我们先不要谈论这个设计是否合理,也不要谈论这三个实体是贫血模型还是充血模型。
对象建立好了,我们来建设数据库表吧:users表,blogs表,posts表(为什么表都用复数?从rails里学过来的,activerecord模式里,表里每条记录都对应着一个对象,所以表用复数表示,这是一种约定)
step 2:创建数据库表
users表:
<img height="118" alt="" src="http://images.cnblogs.com/cnblogs_com/yuyijq/howdoi/howdoi_1.jpg" width="391" border="0" />
blogs表:
<img height="119" alt="" src="http://images.cnblogs.com/cnblogs_com/yuyijq/howdoi/howdoi_2.jpg" width="366" border="0" />
posts表:
<img height="139" alt="" src="http://images.cnblogs.com/cnblogs_com/yuyijq/howdoi/howdoi_3.jpg" width="367" border="0" />
我们注意到,用户类里的leavetime离开时间在数据库里并没有对应的字段,因为这个是用来临时记路用户离开离开博客园的时间的,这样可以用来做一些在线统计,所以无需持久化。
step 3:建立映射
对象也有了,关系也有了,那剩下的是什么?对,就是映射,我们怎样将对象映射到数据库表上?
我们从最简单的post开始吧:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->/// <summary>
/// 博客文章类
/// 这个类和数据库里的posts表对应,由于
/// 类名和表名不一样,所以需要显式的指明table特性的name属性
/// 如果是一致的则无需指明了
/// </summary>
[table(name="posts")]
public class post
{
/// <summary>
/// 文章id
/// 这个对应posts表里的postid
/// 这个字段还是一个主键,所以column特性的isprimarykey属性为true
/// </summary>
[column(name="postid",isprimarykey=true)]
public int id { get; set; }
/// <summary>
/// 文章从属的博客
/// 这个对应着表里的blogid,名字一样所以只需要加个column特性就可以了
/// 下面几个也是一样的意思
/// </summary>
[column]
public int blogid { get; set; }
/// <summary>
/// 标题
/// </summary>
[column]
public string title { get; set; }
/// <summary>
/// 内容
/// </summary>
[column]
public string body { get; set; }
/// <summary>
/// 发表时间
/// </summary>
[column]
public datetime createdate { get; set; }
}
仔细看看注释里面的说明,很简单吧,在类上面加table特性,属性上加column特性。
映射建完了,我们可以施加一些操作了。
在上一篇文章里介绍了,linq to sql的入口点是datacontext类,这个类主要做这么几件事情:
将我们用c#写的这个查询翻译成sql语句,当然也并不是他全权负责翻译工作。
执行查询
连接的管理,这样我们就不用写啥connection了啊,也不用担心数据库的连接和关闭的问题。
step 4:执行查询
那我们就首先实例化一个datacontext类吧(为了好测试,使用一个控制台程序):从这里可以看出,datacontext需要一个连接字符串,在datacontext里,我们打交道最多的就是gettable<tentity>()方法,这里的tentity就是我们上面的那个post了,带有映射的实体,这个方法返回一个table<tentity>对象:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->table<tentity> posts = dbcontext.gettable
();
实际上,table<tentity>实现了ienumerable<tentity>接口,那这里实际上是返回了一个ienumerable
系列,那我们可以对posts进行遍历了:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->foreach(var post in posts)
console.writeline(post.title);
实际上,如果光返回一个table<tentity>,而不在上面施加任何的操作,遍历的时候是返回整个表的数据,在上一篇我还提到,为了跟踪,我们最好将dbcontext.log给显示出来。如果你添加了下面这行代码:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->dbcontext.log = console.out;
(对于这行代码,如果你使用的是控制台程序,那么输出就会显示在命令窗口里,如果你用的是winform程序调试,那么输出会显示在vs的output窗口里)
那你将会从控制台里得到下面的东东:
<img height="121" alt="" src="http://images.cnblogs.com/cnblogs_com/yuyijq/howdoi/howdoi_4.jpg" width="648" border="0" />
这就是linq为你生成的sql语句,是不在是比你写的还标准啊,呵呵。
当然,我们常常做的肯定不是像上面这样的全查询,我们还要附加一些条件的。
上一篇还提到过:由于table<tentity>实现了ienumerable<tentity>接口,那么所有的查询表达式都可以在这里使用了,这样你先前在linq to objects里学到东西现在又有了新的用途了:
比如我们可以对blogid做筛选:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->var posts = from post in dbcontext.gettable
()
where post.blogid == 2
select post;
(ps:我在写linq语法的时候,因为linq的风格太像sql语句了,所以一些地方比如 ==我老写成=,而&&经常写成”and”,希望大家不要烦我这样的低级错误,呵呵)
看看这次生成的sql语句:

可以看到生成的sql语句对blogid做了筛选,而且值得庆祝的是,linq to sql为我们生成的sql语句还使用的是参数,她并不是仅仅将数值和语句组合在一起。关于使用参数而不是拼凑起来的sql语句的好处在这里啰嗦两句,主要有两点:<img height="125" alt="" src="http://images.cnblogs.com/cnblogs_com/yuyijq/howdoi/howdoi_6.jpg" width="657" border="0" />
面对这样的一个linq查询,linq to sql居然知道将它翻译成like子句,从上图倒数第二行最后中括号里面的东西可以看出,linq to sql还知道将传入的参数设置为y%,我不得不惊叹:太强大了。
但是不是所有的c#的方法都可以使用呢?答案是否定的。比如:我想对最后查出来的文章的创建时间做个格式化,居然报错了,说不支持这种“翻译”。那看来每次我们做查询的时候是要先try一下。
上面只是做了筛选的实例,你还可以去尝试一下排序和分组,这个和linq to objects里的用法是一样的,你可以到前面的文章里复习一下。
step 5:插入对象
本系列的文章到现在为止都是在介绍查询,难道linq to sql只能做查询么?不能向数据库添加数据?,肯定不是的:生成的sql语句:
<img height="147" alt="" src="http://images.cnblogs.com/cnblogs_com/yuyijq/howdoi/howdoi_7.jpg" width="637" border="0" />
一个简单的不能再简单的insert into语句,加上一条返回新插入记录的标识值的语句。
如果你按照本文所说的一步步往下来,在执行上面的插入的时候肯定会碰到异常,这是因为,id对应的数据表字段postid是该表的主键,你不应该在插入的时候赋值,有人说我实例化对象的时候确实没有给post的id属性赋值啊,但是.net会在后台为我们将id赋值为0,所以你要对映射对象做一下修改:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->[column(name="postid",isprimarykey=true,isdbgenerated=true)]
public int id { get; set; }
不仅仅数据表的主键要加这个属性,如果对于那些在数据库里设置了默认值的,你并不像用程序插入的时候,你也得使用,比如这里的createdate。
step 6:更新数据
可以插入肯定就可以更新了,下面就来看看如何更新呢:
做更新的时候,你首先得从数据库查询出该对象,然后对该对象的属性进行修改,最后更新到数据库:linq to sql也会自动的帮你生成update语句了。
有了插入,更新,查询就差一个delete curd就全了,对于delete更简单了,你只要调用table<tentity>的deleteonsubmit方法就行了,这里就不再详述。
注意:需添加
using system.data.linq.mapping;命名空间。
上面表post中body字段类型应该为vchar(50),在调试进行update表时发生异常,说类型不匹配。原因在找中....
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->var posts = from post in dbcontext.gettable
()
where post.blogid == 2
select post;
foreach (var post in posts)
post.blogid = 5;
dbcontext.submitchanges();
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->table
posts = dbcontext.gettable
();
//先实例化一个新的要插入的对象
post post = new post();
post.blogid = 2;
post.title = "test";
post.body = "test,test,test,test";
post.createdate = datetime.now;
//调用table<tentity>的insertonsubmit方法
posts.insertonsubmit(post);
//把改变提交到数据库,这个时候才真正执行了
dbcontext.submitchanges();
//提交修改后,你就可以查询新插入的post的id了
console.writeline(post.id);
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->var posts = from post in dbcontext.gettable
()
where post.title.startswith("y")
select post.createdate.tostring("yyyy-mm-dd");
这样可以有效的sql注入攻击,这个hack手段曾经让很多网站吃尽了苦头。
使用参数可以利用sql server对sql语句的缓存和预编译作用,因为使用参数的sql语句可能多次用到,而拼凑起来的sql语句却和特定的查询有关。
这样的筛选还不能体现出linq的智能了,请再看这个:
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->var posts = from post in dbcontext.gettable
()
where post.title.startswith("y")
select post;
<!--
code highlighting produced by actipro codehighlighter (freeware)
http://www.codehighlighter.com/
-->datacontext dbcontext = new datacontext(configurationmanager.connectionstrings["cnblogs"].connectionstring);





http://www.kickseden.com/product2.asp?id=10"> air yeezy shoes</a>
http://www.kickseden.com/product2.asp?id=7"> nike dunk sb</a>
http://www.kickseden.com/product2.asp?id=14"> supra shoes</a>
http://www.kickseden.com"> cheap jordans</a>
air jordans
air yeezy