摘要: 数据库的映射指的就是对数据库进行配置,包括生成表名,架构名,列名。这些内容前面的笔记已经涉及到了,还包括的复杂类型的设置,这里就不在赘述。本次主要学习和掌握如何将单个类映射到多个表中,多个类如何映射到一个通用表中和各种类继承架构的配置。让多个实体映射到同一个表:AKA表切分通常一个数据库表中虽然有很多列,但在很多场景只需要使用其中的一部分,其他的只是一些附加的数据。当我们映射一个实体到这样的表以后,你会发现要浪费资源来处理一些无用的数据。表切分技术可以解决这个问题,这种技术允许在一个单独表中访问多个实体。为了将多个实体映射到一个通用的表中,实体必须遵循如下规则:实体必须是一对一关系实体必须共享 阅读全文
posted @ 2013-05-23 17:31 Rising_Sun 阅读(3790) 评论(1) 推荐(4) 编辑
摘要: 本文主要学习是类之间的关联是如何映射到数据库中形成表与表间的关系的。这种关系包括 一对多,多对多,一对一。多重关系Code First在处理多重性关系时应用了一系列规则。规则使用导航属性确定多重性关系。即可以是一对导航属性互相指定(双向关系),也可以是单个导航属性(单向关系)。1、如果你的类中包含一个引用和一个集合导航属性,Code First视为一对多关系;2、如果你的类中仅在单边包含导航属性(即要么是集合要么是引用,只有一种),Code First也将其视为一对多关系;3、如果你的类包含两个集合属性,Code First默认会使用多对多关系;4、如果你的类包含两个引用属性,Code Fir 阅读全文
posted @ 2013-05-22 16:07 Rising_Sun 阅读(3536) 评论(0) 推荐(2) 编辑
摘要: 上一篇,主要学习了一些CodeFirst 中修改默认规约的基本配置。在文章最后,出现了个新的名词:复杂类型。什么是复杂类型呢?书中说道:“复杂类型也可视作值类型(?)可以作为附加属性添加到其他类。复杂类型与实体类型的区别在于复杂类型没有其自己的键。它是依赖于其"宿主"类型跟踪变化 和持久化。一个没有Key属性的类型,并且作为属性映射到一个或多个类型中,Code First就会将其视作为复杂类型。Code First将预设复杂类型的属性出现在宿主类型映射到数据库的表中。”说简单一点就是,项目中有个类A,这个A,会被其他类引用到比如:实体类B 和 实体类C,但是建立数据库的时候 阅读全文
posted @ 2013-05-21 14:36 Rising_Sun 阅读(3530) 评论(2) 推荐(2) 编辑
摘要: 对EF Code first 编程模型有了一定的了解之后,通过上一篇简单的例子,通过代码对数据库进行了创建,但是其数据结构都是按照EF默认的约定来创建的。比如:数据库名称:由于上一篇的例子在配置文件中显示设置数据库的连接,因此创建的数据库名称就为连接串中指定的 BookDb。若没有显示指定的话,并使用默认数据库 .\SQLEXPRESS, 则EF生成的数据库名称应该为DbContext 的"命名空间.类名" (DataAccess.BookContext)表名:默认约定均为模型类名的复数形式。如例子中的 Authors 和 Books,没有指定架构名称则采用默认架构名:db 阅读全文
posted @ 2013-05-17 17:22 Rising_Sun 阅读(2045) 评论(1) 推荐(2) 编辑
摘要: 最近在学习EF,在园子里面参考了很多大神的文章,自己也看了些电子书,为了加深印象和快速掌握,特作此笔记和总结。一、EF 是什么?Entity Framework的全称为ADO.NET Entity Framework,是在ADO.NET上层实现的ORM(对象关系映射)封装,其技术架构如下图所示:1、 Entity Framework的使用分为连接配置、关系映射、上下文环境定义、数据持久化四步。连接配置:如何与数据库进行连接。我们可以通过连接字符串或者代码进行设置和原来连接ADO.Net 连接数据的方式没有什么太大的区别。关系映射(如上图紫色的部分): (1)SSDL 称之为存储模型... 阅读全文
posted @ 2013-05-14 23:03 Rising_Sun 阅读(2241) 评论(1) 推荐(2) 编辑
摘要: 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。当我们vs中编写代码使用Linq 的时候,经常会看到智能提示出现带如下符号的方法:这就是扩展方法。如何定义自己的扩展方法呢?MSDN给出了详细的解释(具体可以参阅实现和调用自定义扩展方法):1、定义一个静态类以包含扩展方法。该类必须对客户端代码可见。2、将该扩展方法实现为静态方法,并使其至少具有与包含类相同的可见性。3、该方法的第一个参数指定方法所操作的类型;该参数必须以 this 修饰符开头。4、在调用代码中,添加一条 us 阅读全文
posted @ 2013-04-25 10:07 Rising_Sun 阅读(9700) 评论(2) 推荐(6) 编辑
摘要: 上午这个文章被工作人员移出了首页!因此我修改了标题,承认上午的文章确实有吐槽的成份,但是既然发生了这样戏剧的事情,就要记录下来和大家分享一下今天的经历。原因有两个:1、希望大家找工作看清公司!2、如何面对这样的猥琐HR?本人从来都没有发过非技术贴!博客园是汇集了众多的开发者,但是我觉的我们不应该总是讨论技术,技术之外,我们也需要讨如何为人处事,如何面对在公司中的磕磕绊绊!博客园是不是应该也开辟一个板块作为大家的分享工作中的激情、快乐、愤慨、失落的板块呢?话已至此,工作人员如果您再移除我的文章,我也无话可说!事从何来呢?还不是为了那区区的几百块钱的工资吗?以下是今天早上的即扯淡又戏剧的经历:生活 阅读全文
posted @ 2013-03-08 11:17 Rising_Sun 阅读(2847) 评论(29) 推荐(4) 编辑
摘要: 今天我们总结一下 C#线程同步 中的 Monitor 类 和 Lock 关键字进行一下总结。首先来看看他们有什么异同(相信对此熟悉的朋友们都很清楚):1、他们都是在指定对象上获取排他锁,用于同步代码区2、Lock关键字是Monitor的一种替换用法,lock在IL代码中会被翻译成Monitor.lock(obj){//代码段}就等同于Monitor.Enter(obj);//代码段Monitor.Exit(obj);所以lock能做的,Monitor肯定能做,Monitor能做的,lock不一定能做,我们今天就主要说的就是Monitor 类。Monitor 类 通过Enter(Object) 阅读全文
posted @ 2013-03-07 15:10 Rising_Sun 阅读(13084) 评论(9) 推荐(20) 编辑
摘要: C# 从1.x 发展到目前的 4.5,委托的写法真是越来越简单精悍。如果您对这些委托的写法不是很清晰,本文可以帮助到您。委托是一种安全封装方法的类型,可以将方法作为方法的参数。委派方法的参数个数、顺序、类型及方法返回值类型必须跟定义的委托方法一样,但参数名称可以不同。1、C# 定义一个完整委托:delegate string SayMessage(string msg);static string SayHello(string Name){ return string.Format("Hello {0}", Name);}static void Main(string[] 阅读全文
posted @ 2013-02-27 14:03 Rising_Sun 阅读(9468) 评论(50) 推荐(60) 编辑
摘要: MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和SP_EXECUTESQL,我们先来看一下两种方式的用法。先建立一个表,并添加一些数据来进行演示:CREATE TABLE t_student( Id INT NOT NULL, Name NVARCHAR (10) NULL, Age TINYINT NULL, School NVARCHAR(20) NULL, Class NVARCHAR(10) NULL, Score FLOAT NULL, CONSTRAINT [PK_Student_Id] PRIMARY KEY CLUSTERED(Id))GOINSERT 阅读全文
posted @ 2013-01-14 15:46 Rising_Sun 阅读(29664) 评论(3) 推荐(9) 编辑
摘要: Jquery 操作 Html Table 是很方便的,这里对表格的基本操作进行一下简单的总结。首先建立一个通用的表格css 和一个 表格Table:table{ border-collapse: collapse; border-spacing: 0; margin-right: auto; margin-left: auto; width: 800px; } th, td { border: 1px solid #b5d6e6; font-size: 12px; font-weight: normal; text-align: cente... 阅读全文
posted @ 2013-01-11 15:53 Rising_Sun 阅读(162032) 评论(7) 推荐(18) 编辑
摘要: 在使用 Javascript 编写前台脚本的时候,经常会操作 Html 控件,比如 checkbox、radio、select,用 Jquery 库操作其他会方便很多,下面用Jq对这些控件的操作进行一个全面的代码总结。一、Jquery 对CheckBox 的操作:<input id="ckb1" name="ckb" checked="checked" value="0" type="checkbox" /><span>篮球</span><input i 阅读全文
posted @ 2013-01-09 15:44 Rising_Sun 阅读(13944) 评论(1) 推荐(3) 编辑
摘要: 本篇我们主要总结和介绍一下利用属性标签方式对多线程进行方法同步和上下文同步,主要用到的是MethodImplAttribute 类 和 SynchronizationAttribute 类。这两个属于方法特性和类的特性,标识某个方法或类是同步方法,本质上还是基于Lock的实现的。首先我们还是来看一个例子,假如小明和小红两个人用都是主附银行卡,两个人都可以对帐户进行操作,比如帐户余额1000元,比如两个人几乎同时进行取钱600元的操作。代码如下:我们没有进行任何的同步措施,我们运行一下代码,看一下结果:(不同计算机执行结果可能不同)namespace ThreadAttribute{ cl... 阅读全文
posted @ 2013-01-05 15:28 Rising_Sun 阅读(10237) 评论(1) 推荐(13) 编辑
摘要: 最近工作闲暇之际,翻阅了以前保存的电子书《C#多线程编程手册》,发现此书同步技术这块写的甚好,于是参考此书并结合实例,对同步技术做一下总结和分析,也算是读书笔记与心得体会吧,并与大家分享。书中提到的同步技术有很多种,归纳起来常用的方式有以下几种:1、利用属性标签方式进行方法同步和上下文同步:MethodImplAttribute 类 和 SynchronizationAttribute 类2、同步代码区:Monitor 类、Lock 关键字、ReaderWriterLock 类。3、手控同步:AutoResetEvent 类、ManualResetEvent 类、Mutex 类、Interlo 阅读全文
posted @ 2012-12-26 14:13 Rising_Sun 阅读(8989) 评论(4) 推荐(6) 编辑
摘要: 前些日子,看到园子里面有人用老王喝茶的例子讲解了一下同步和异步,虽然没有代码实现,但是能够通俗易懂的讲解了同步、异步、阻塞、非阻塞的关系了,今天借题发挥,用一个热水器加热洗澡的例子来具体演示一下C#使用委托进行异步编程。首先引用MSDN中的一段话来描述一下如何使用异步方式.NET Framework 允许您异步调用任何方法。 为此,应定义与您要调用的方法具有相同签名的委托;公共语言运行时会自动使用适当的签名为该委托定义 BeginInvoke 和 EndInvoke 方法。BeginInvoke 方法启动异步调用。 该方法与您需要异步执行的方法具有相同的参数,还有另外两个可选参数。 第一个参数 阅读全文
posted @ 2012-12-11 23:43 Rising_Sun 阅读(25874) 评论(32) 推荐(32) 编辑