03 2017 档案

摘要:1。CreateDatabaseIfNotExists: 2.DropCreateDatabaseIfModelChanges: 3.DropCreateDatabaseAlways: 4.Custom DB Initializer: 配置文件中初始化 关闭数据库初始化功能 初始化 种子 数据 阅读全文
posted @ 2017-03-29 23:08 蓝平凡 阅读(1850) 评论(0) 推荐(0)
摘要:之前我们配置的实体都都在OnModelCreating方法中,如果有很多实体的话,OnModelCreating方法管理很麻烦 我们可以用单独的类来管理配置,继承EntityTypeConfiguration<TEntity>类实现 阅读全文
posted @ 2017-03-29 23:06 蓝平凡 阅读(6469) 评论(0) 推荐(1)
摘要:级联删除是当删除主记录的时候会自动删除依赖的记录或者设置外键属性为null 级联删除:当删除Student的时候也删除StudentAddress 级联删除注意的: 1.需要保证DbContext中已经加载了该父对象的所有子对象 因此在查询父对象的时候应该使用Include("子对象属性名")查询, 阅读全文
posted @ 2017-03-29 22:58 蓝平凡 阅读(2745) 评论(1) 推荐(0)
摘要:namespace EFDemo { using System; using System.Data.Entity; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; public partial class SchoolCon... 阅读全文
posted @ 2017-03-29 21:50 蓝平凡 阅读(564) 评论(0) 推荐(0)
摘要:默认配置会生成如下表结构 Fluent API配置 阅读全文
posted @ 2017-03-29 21:44 蓝平凡 阅读(469) 评论(0) 推荐(0)
摘要:上面的代码中,Student实体包含导航属性Standard,Standard实体包含集合导航属性Student,Code First的默认规则为1对多的关系 指定外键 Fluent API配置 如果外键不符合默认规则 可以如下配置 modelBuilder.Entity<Student>().Ha 阅读全文
posted @ 2017-03-29 21:01 蓝平凡 阅读(2070) 评论(0) 推荐(0)
摘要:1对1、1对0 的关系 例如:Entity1与零个或一个Entity2的实例有关系 在关系型数据库(如SQL Server)中,1对0或1的关系是一个表的主键将是另一个关系表的主键或外键 因此,创建Student表的时候设置StudentId为主键,StudentAddress表的StudentAd 阅读全文
posted @ 2017-03-29 20:39 蓝平凡 阅读(3552) 评论(0) 推荐(0)
摘要:Set default Schema Set Custom Convetions To Single or Multiple Tables and Schema To Complex type Inheritance Hierarchies To Column, Column Name, Colum 阅读全文
posted @ 2017-03-29 00:01 蓝平凡 阅读(2280) 评论(0) 推荐(0)
摘要:数据注解:配置选项的子集;Fluent API包含所有选项 System.ComponentModel.DataAnnotations Attributes: System.ComponentModel.DataAnnotations.Schema Attributes: AttributeDesc 阅读全文
posted @ 2017-03-28 22:55 蓝平凡 阅读(849) 评论(1) 推荐(1)
摘要:Code First中有三种不同的方法表示继承层次关系 1.Table per Hierarchy (TPH): 这种方法建议用一个表来表示整个类的继承层次关系,表中包含一个识别列来区分继承类,在EntityFramework中,这是默认的实现 类与数据库表的映射最简单的策略应该是:每个持久类对应一 阅读全文
posted @ 2017-03-28 00:53 蓝平凡 阅读(2470) 评论(0) 推荐(2)
摘要:Context类的基类构造函数有如下的参数 1.无参数 如果没有给基类构造函数添加参数,它会在local SQLEXPRESS server创建数据库,名为{Namespace}.{Context class name} 上面创建的数据库名称为:SchoolDataLayer.Context 2.参 阅读全文
posted @ 2017-03-26 23:23 蓝平凡 阅读(406) 评论(0) 推荐(0)
摘要:协定是一系列的默认规则用来自动配置领域中的概念模型 1:类型发现 Code-First对包含DBSet属性的类型创建表(包括这些类型的所有引用类型) 上图所示:即使上下文不包含Teacher的实体集,Code-First也为Teacher创建表 Code-First发现类型的协定: 1)上下文中的D 阅读全文
posted @ 2017-03-26 22:34 蓝平凡 阅读(745) 评论(0) 推荐(0)
摘要:什么是Code-First 基本工作流: 写好应用程序的领域类和上下文类→配置领域类的额外映射→运行程序→Code-First API创建新的数据库或与现有数据库对应→添加种子数据到数据库中测试 阅读全文
posted @ 2017-03-26 16:40 蓝平凡 阅读(357) 评论(0) 推荐(1)
摘要:You can change the color of an entity in the designer so that it would be easy to see related groups of entities in the designer from Visual Studio 20 阅读全文
posted @ 2017-03-26 16:33 蓝平凡 阅读(282) 评论(0) 推荐(0)
摘要:Visual Studio 2012 provides a facility to split the design time visual representation of the Entity Data Model. This means that you can have multiple 阅读全文
posted @ 2017-03-26 16:32 蓝平凡 阅读(226) 评论(0) 推荐(0)
摘要:可以为实体实现自定义验证,重写DBContext中的个ValidateEntity方法 阅读全文
posted @ 2017-03-26 16:24 蓝平凡 阅读(833) 评论(0) 推荐(0)
摘要:SQL query for entity types: 注意:查询的字段必须和实体中的属性名对应 SQL query for non-entity types: Raw SQL commands to the database: 阅读全文
posted @ 2017-03-26 16:15 蓝平凡 阅读(358) 评论(0) 推荐(0)
摘要:即使延迟加载不能使用,也可以通过明确的调用来延迟加载相关实体 使用DBEntryEntity来完成 阅读全文
posted @ 2017-03-26 16:05 蓝平凡 阅读(238) 评论(0) 推荐(0)
摘要:延迟加载:延迟加载相关的数据 首先查询Student表 再查询StudentAddress表 可以为指定的属性或整个上下文关闭延迟加载的功能,关闭属性的延迟加载功能就是不要设置属性为virtual 延迟加载的规则: 1.context.Configuration.ProxyCreationEnabl 阅读全文
posted @ 2017-03-26 16:01 蓝平凡 阅读(214) 评论(0) 推荐(0)
摘要:延迟加载:延迟加载相关的数据 首先查询Student表 再查询StudentAddress表 可以为指定的属性或整个上下文关闭延迟加载的功能,关闭属性的延迟加载功能就是不要设置属性为virtual 延迟加载的规则: 1.context.Configuration.ProxyCreationEnabl 阅读全文
posted @ 2017-03-26 15:59 蓝平凡 阅读(286) 评论(0) 推荐(0)
摘要:贪婪加载是指查询一个类型实体的时候同时查询与实体关联的类型 通过Include()方法实现 Load multiple levels of related entities: 阅读全文
posted @ 2017-03-26 15:53 蓝平凡 阅读(454) 评论(0) 推荐(0)
摘要:DBSet的Local属性提供简单的从context上下文获取当前已经被跟踪的实体(实体不能被标记为Deleted状态) 上面的例子中表明,本地数据保持跟踪状态为Added,Modified,Unchanged状态的实体 DBSet集合跟踪状态为Deleted,Modified,Unchanged实 阅读全文
posted @ 2017-03-26 15:26 蓝平凡 阅读(500) 评论(0) 推荐(0)
摘要:USE [SchoolDB] GO /****** Object: UserDefinedFunction [dbo].[GetCourseListByStudentID] */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[GetCo... 阅读全文
posted @ 2017-03-26 15:02 蓝平凡 阅读(330) 评论(0) 推荐(0)
摘要:MS SQl Server引进两种特殊的数据类型geography and geometry 阅读全文
posted @ 2017-03-26 14:53 蓝平凡 阅读(322) 评论(0) 推荐(0)
摘要:1. Convert an existing property to Enum: 2. Add New Enum from Designer: 3. If you already have Enum type created in your code, then you can use that a 阅读全文
posted @ 2017-03-26 12:54 蓝平凡 阅读(303) 评论(0) 推荐(0)
摘要:To migrate your existing Entity Framework 4.x project to Entity Framework 5.0 using VS2012, first target .NET Framework 4.5: Second, remove the existi 阅读全文
posted @ 2017-03-26 12:43 蓝平凡 阅读(165) 评论(0) 推荐(0)
摘要:我们先创建如下3个存储过程 1.Sp_InsertStudentInfo: 2.sp_UpdateStudent: 3.sp_DeleteStudent 将存储过程添加到EDM中 实体浏览器将存储过程添加到存储模型中,但是不引进函数 在EDM设计器中,右键Student实体,选择存储过程映射 上面代 阅读全文
posted @ 2017-03-26 12:39 蓝平凡 阅读(320) 评论(0) 推荐(0)
摘要:CREATE PROCEDURE [dbo].[GetCoursesByStudentId] -- Add the parameters for the stored procedure here @StudentId int = null AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from... 阅读全文
posted @ 2017-03-25 23:16 蓝平凡 阅读(271) 评论(0) 推荐(0)
摘要:EntityFramework默认支持乐观并发 乐观并发中,实体加载后如果都没发生变化,ef保存该实体 首先,我们需要一个rowversion列为了控制student实体的并发问题,rowversion的数据类型为字节数组,rowversion像是自增id, rowversion的值在数据库当中自动 阅读全文
posted @ 2017-03-25 22:54 蓝平凡 阅读(321) 评论(0) 推荐(0)
摘要:使用主键属性 每个实体必须有主键 默认值的id属性值必须为0 在context2中,它不知道实体的状态, 只能通过实体的主键来判断实体的状态 如果主键为0,则是新的对象,不为0 就是修改 使用主键的好处有: 1.不需要多余的代码来决定实体的状态 2.良好的性能 不好的地方有 ; 1.每个实体都需要有 阅读全文
posted @ 2017-03-25 21:58 蓝平凡 阅读(390) 评论(0) 推荐(0)
摘要://Create student in disconnected mode Student newStudent = new Student() { StudentName = "New Single Student" }; //Assign new standard to student entity newStudent.Standard = new Standar... 阅读全文
posted @ 2017-03-25 21:36 蓝平凡 阅读(367) 评论(0) 推荐(0)
摘要:Student studentToDelete; //1. Get student from DB using (var ctx = new SchoolDBEntities()) { studentToDelete = ctx.Students.Where(s => s.StudentName == "Student1").FirstOrDefault(); } //Create n... 阅读全文
posted @ 2017-03-25 21:30 蓝平凡 阅读(209) 评论(0) 推荐(0)
摘要:1.从DB中获取存在是student 2.在context作用域之外设置studentname 3.使用Context.Entry()方法获取实体的DBEntityEntry,并更改实体状态为modified 阅读全文
posted @ 2017-03-25 21:28 蓝平凡 阅读(250) 评论(0) 推荐(0)
摘要:首先创建新的Student对象并设置StudentName为bill 其次创建新的Context上下文,并把新实体添加到Students的EntitySet中 最后调用SaveChanges方法,将在数据库中执行如下操作 上面也可以用如下方法添加实体 阅读全文
posted @ 2017-03-25 21:24 蓝平凡 阅读(314) 评论(0) 推荐(0)
摘要:如何把断开的实体添加到新的context上下文中 1.首先,我们需要把实体附加到新的context上下文实例中。 2.其次,手动的给实体设置适当的实体状态,因为新的context上下文不知道断开的实体上有什么操作。 DbSet.Add(): 把实体添加到context上下文,并自动设置实体的属性为a 阅读全文
posted @ 2017-03-25 21:15 蓝平凡 阅读(246) 评论(0) 推荐(0)
摘要:实体框架的持久化 当用EntityFramework持久化一个对象时,有两种情形:连接的和断开的 1.连接场景:使用同一个context上下文从数据库中查询和持久化实体时,查询和持久化实体期间,context不会被销毁 2.断开场景:实体的查询和保存提交使用不同的context上下文 上图所示,co 阅读全文
posted @ 2017-03-25 19:26 蓝平凡 阅读(342) 评论(0) 推荐(0)
摘要:EntityFramework自动跟踪上下文中已经加载的实体,DbChangeTracker类给你关于当前实体的所有跟踪信息 注意,每个实体都要有EntityKey(主键)的属性,EntityFramework将不添加没有主键的概念模型 阅读全文
posted @ 2017-03-25 18:35 蓝平凡 阅读(465) 评论(0) 推荐(0)
摘要:DbEntityEntry是一个重要的类,用来获取各种各样的实体信息 可以通过DBContext的Entry方法获取DbEntityEntry的实例 通过DBEntityEntry,可以获取实体的状态,所有属性的当前值和原始值 DbEntityEntry可以设置实体的状态如Added、Modifie 阅读全文
posted @ 2017-03-25 18:24 蓝平凡 阅读(824) 评论(0) 推荐(0)
摘要:DBSet类表示一个实体的集合,用来创建、更新、删除、查询操作,DBSet<TEntity>是DBSet的泛型版本 你可以使用DbContext获取DBSet的引用,例如dbContext.Students DBSet中的一些重要方法 阅读全文
posted @ 2017-03-25 17:43 蓝平凡 阅读(6307) 评论(0) 推荐(2)
摘要:First/FirstOrDefault: 对应的sql语句如下 如果没有数据First()将抛出异常,而FirstOrDefault()则返回数据类型的默认值,如引用类型则返回null Single/SingleOrDefault: sql语句如下 如果返回的结果包含一个以上的元素时,两者都会抛出 阅读全文
posted @ 2017-03-25 17:16 蓝平凡 阅读(478) 评论(0) 推荐(0)
摘要:1.多个select和where操作 2.Group by left outer join Sorting inner join 阅读全文
posted @ 2017-03-25 13:00 蓝平凡 阅读(426) 评论(0) 推荐(0)
摘要:上面的查询使用了多次的ToLower方法 下面的例子中使用let关键字重新引进一个变量,可以在查询中的任何地方使用,让代码可读性更高 into关键字,可以使你在一个select语句之后继续一个查询 上面的查询中,into关键字引进新的变量,所以从第一个变量s作用域出来,你可以用新的变量写出另一个查询 阅读全文
posted @ 2017-03-25 12:21 蓝平凡 阅读(569) 评论(0) 推荐(0)
摘要:延迟执行是指一个表达式的值延迟获取,知道它的值真正用到。 当你用foreach循环时,表达式才真正的执行。 延迟执行有个最重要的好处:它总是给你最新的数据 实现延迟运行 你可以使用yield关键字实现延迟加载 从上面输出的结果看出:当你用foreach循环遍历时,GetTeenAgerStudent 阅读全文
posted @ 2017-03-25 12:10 蓝平凡 阅读(378) 评论(0) 推荐(0)
摘要:表达式树就像是树形的数据结构,表达式树中的每一个节点都是表达式, 表达式树可以表示一个数学公式如:x<y。x、<、y都是一个表达式,并构成树形的数据结构 表达式树使lambda表达式的结构变得透明清楚, 编译器将上面的表达式翻译成下面的表达式树 你可以手动创建一个表达式树,如下 1.先创建参数节点 阅读全文
posted @ 2017-03-25 11:46 蓝平凡 阅读(1216) 评论(0) 推荐(0)
摘要:class Program { static void ReportTypeProperties<T>(T obj) { Console.WriteLine("Compile-time type: {0}", typeof(T).Name); Console.WriteLine("Actual ty 阅读全文
posted @ 2017-03-24 00:14 蓝平凡 阅读(260) 评论(0) 推荐(0)
摘要:SkipWhile 找到第一个与给定条件匹配的元素,然后跳过该元素获取剩余元素 从集合第一个元素判断,如果满足条件,则继续判断下一个元素,知道不满足条件后,跳过满足条件的元素返回剩下的序列 Take 阅读全文
posted @ 2017-03-24 00:04 蓝平凡 阅读(1210) 评论(0) 推荐(0)
摘要:Set OperatorsUsage Distinct 去掉集合的重复项 Except 返回两个集合的不同,第一个集合的元素不能出现在第二个集合中 Intersect 返回两个集合的交集,即元素同时出现在两个集合中 Union Returns unique elements from two seq 阅读全文
posted @ 2017-03-23 23:36 蓝平凡 阅读(1285) 评论(0) 推荐(0)
摘要:SequenceEqual 判断集合相等‘ 如果集合的元素是简单类型,则判断两个集合的元素个数,元素值,出现的位置是否一样 如果集合的元素是复杂类型,则判断两个集合的元素引用是否相同、元素个数,元素值,出现的位置是否一样 如果要判断集合元素为复杂类型的值是否相等,则要实现IQualityCompar 阅读全文
posted @ 2017-03-23 21:10 蓝平凡 阅读(2717) 评论(0) 推荐(0)
摘要:IList intList = new List>() { 10, 20, 30 }; var avg = intList.Average(); Console.WriteLine("Average: {0}", avg); IList studentList = new List>() { new Student() { StudentID = 1, Stud... 阅读全文
posted @ 2017-03-23 00:50 蓝平凡 阅读(598) 评论(0) 推荐(0)
摘要:聚合操作执行数学的运算,如平均数、合计、总数、最大值、最小值 Aggregate接受2个参数,一般第一个参数是称为累积数(默认情况下等于第一个值),而第二个代表了下一个值。第一次计算之后,计算的结果会替换掉第一个参数,继续参与下一次计算。 seed作为种子值进行累加 第三个参数对结果进行构造返回 阅读全文
posted @ 2017-03-23 00:35 蓝平凡 阅读(2015) 评论(0) 推荐(1)
摘要:Contains 上面的result将是false,即使“”Bill"在集合中,因为Contains仅仅比较对象的引用,而不是对象的值。所以要比较对象的值,需要实现IEqualityComparer接口 阅读全文
posted @ 2017-03-23 00:11 蓝平凡 阅读(404) 评论(0) 推荐(0)
摘要:select可以定义结果数据类型,可以返回用户自定义的类型或者匿名类型 方法查询 SelectMany 这里有7个老师,每个人有3个学生,总共21一个学生里 查询3个倒霉蛋没考及格 选出了门下有不及格学生的倒霉蛋老师+门生的分数 阅读全文
posted @ 2017-03-22 23:48 蓝平凡 阅读(18084) 评论(1) 推荐(3)
摘要:Join操作是将两个集合联合 Joining OperatorsUsage Join 将两个序列连接并返回结果集 GroupJoin 根据key将两个序列连接返回,像是SQL中的Left Join 根据key将两个序列连接返回,像是SQL中的Left Join Join操作两个集合,inner co 阅读全文
posted @ 2017-03-22 23:15 蓝平凡 阅读(1489) 评论(0) 推荐(0)
摘要:可以使用foreach遍历group,每个Group包含一个key和内部的集合 ToLookup和GroupBy一样,唯一不同的是GroupBy是延迟执行,而ToLookup是立即执行 注意:GroupBy和ToLookup返回一个集合(包含key,根据key分组的内部集合) 阅读全文
posted @ 2017-03-22 22:23 蓝平凡 阅读(2090) 评论(0) 推荐(2)
摘要:IList studentList = new List() { new Student() { StudentID = 1, StudentName = "John", Age = 18 } , new Student() { StudentID = 2, StudentName = "Steve", Age = 15 } , new Student() { Stu... 阅读全文
posted @ 2017-03-22 22:04 蓝平凡 阅读(672) 评论(0) 推荐(0)
摘要:OrderBy扩展方法有两个重载方法,第一个方法接受一个类型参数,你可以指定通过哪个字段进行排序 第二个方法接受一个实现IComparer的类型,用户可以自定义排序 OrderByDescending 多个排序 可以使用多个字段以逗号隔开进行排序,集合首先以第一个字段进行排序,如果第一个字段有相同的 阅读全文
posted @ 2017-03-22 21:43 蓝平凡 阅读(14287) 评论(0) 推荐(0)
摘要:OfType操作根据集合中的元素是否是给定的类型进行筛选 阅读全文
posted @ 2017-03-22 21:20 蓝平凡 阅读(583) 评论(0) 推荐(0)
摘要:1.where 方式2 方式3 where的第二个扩展方法包含集合的index索引 多个where从句 需要记住的几点: 1.Where根据特定条件来筛选集合元素 2.where扩展方法有2个重载,使用第二个重载方法可以知道当前元素在集合中的索引位置 3.方法语法需要整个lambda表达式,而查询语 阅读全文
posted @ 2017-03-22 21:13 蓝平凡 阅读(2905) 评论(0) 推荐(0)
摘要:1.查询语法 Query Syntax: 查询语法以From开头,后面紧跟着Range veriable变量,From从句像这样的结构"From rangeVariableName in IEnumerablecollection",意思是从集合的每个对象中获取,它有点像foreach循环, for 阅读全文
posted @ 2017-03-22 20:53 蓝平凡 阅读(1155) 评论(0) 推荐(0)
摘要:Enumerable: Queryable: 阅读全文
posted @ 2017-03-22 20:09 蓝平凡 阅读(415) 评论(0) 推荐(0)
摘要:前面我们已经创建EDM、DbContext和实体类,接下来我们学习不同的查询实体方法,转变为数据库的SQL查询 Entity Framework支持3种查询方式:1)LINQ to Entities ,2)Entity SQL ,3)Native SQL 1.LINQ to Entities Lan 阅读全文
posted @ 2017-03-22 00:28 蓝平凡 阅读(520) 评论(0) 推荐(0)
摘要:Entity Framework支持3种不同的开发方法 1.Code First 2.Model First 3.Database First Code First 使用Code First开发模式,你完全避免与EDMX间的开发工作。你首先写好POCO,然后从这些POCO类中创建数据库 喜欢使用DD 阅读全文
posted @ 2017-03-21 23:33 蓝平凡 阅读(845) 评论(0) 推荐(0)
摘要:当我们执行CRUD(Create,Read,Update,Delete)操作之前,最重要的是搞明白实体的生命周期和EntityFrameword怎么管理实体 在一个实体的生命周期里,每个实体都有一个实体状态(基于上下文DbContext执行的操作),实体状态是一个枚举类型System.Data.En 阅读全文
posted @ 2017-03-21 23:00 蓝平凡 阅读(612) 评论(0) 推荐(0)
摘要:下面,我们学习Entity Framework怎么管理实体间的关系 Entity Framework支持三种关系:一对一的关系、一对多的关系、多对多的关系 前面我们创建SchoolDB的实体数据模型,下图展示了EDM可视化设计器中的实体和实体关系 一对一的关系 上图所示,Student和Studen 阅读全文
posted @ 2017-03-21 22:37 蓝平凡 阅读(824) 评论(0) 推荐(0)
摘要:我们为已存在的数据库创建EDM,EDM包含与数据库中表对应的实体。EF中有两种实体类型 POCO entity dynamic proxy entity POCO Entity (Plain Old CLR Object): POCO类是不依赖任何框架的类,它就想.net中普通的类,称作“Plain 阅读全文
posted @ 2017-03-21 21:41 蓝平凡 阅读(1033) 评论(0) 推荐(0)
摘要:上一节中EDM自动生成SchoolEntities类,该类继承DbContext EntityFramework4.1之前的版本,EDM生成的类继承ObjectContext,使用ObjectContext稍微有点棘手,DbContext概念上与ObjectContext相似,它是ObjectCon 阅读全文
posted @ 2017-03-21 21:20 蓝平凡 阅读(6055) 评论(0) 推荐(0)
摘要:我们已经为School表创建第一个实体数据模型,可视化的EDM设计器不显示所有的实体,而是显示和数据库中对应的表和视图 Model Browser为你提供关于所有对象和函数的信息, Diagrams : 可视化的图表 Entity Types: 实体类型 Complex Types: 复杂类型,包含 阅读全文
posted @ 2017-03-21 20:58 蓝平凡 阅读(735) 评论(0) 推荐(0)
摘要:1.用vs2012创建控制台程序 2.设置项目的.net 版本 3.创建Ado.net实体数据模型 3.打开实体数据模型向导Entity Framework有四种模型选择 来自数据库的EF设计器(Database First)、空EF设计器(Model First)、空CodeFirst模型(Cod 阅读全文
posted @ 2017-03-21 20:48 蓝平凡 阅读(6713) 评论(0) 推荐(0)
摘要:Entity Framework 架构 EDM(Entity Data Model)EDM由3个主要部分组成 Conceptual model , Mapping and Storage model. 1.Conceptual model:概念模型,包含实体类型和它们之间的关系,与数据库的表设计独立 阅读全文
posted @ 2017-03-21 19:49 蓝平凡 阅读(713) 评论(0) 推荐(1)
摘要:所有的事件是实现IKernelEvents 接口,已容器的Kernel属性暴露出来 1. AddedAsChildKernel 当前的容器添加子容器或其他容器时触发 2. RemovedAsChildKernel 和上面相反 ComponentModel events 3. Registration 阅读全文
posted @ 2017-03-12 11:14 蓝平凡 阅读(337) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2017-03-12 10:57 蓝平凡 阅读(179) 评论(0) 推荐(0)
摘要:public class RequireLoggerProperties : IContributeComponentModelConstruction { public void ProcessModel(IKernel kernel, ComponentModel model) { model.Properties .Where(p =... 阅读全文
posted @ 2017-03-12 10:51 蓝平凡 阅读(237) 评论(0) 推荐(0)
摘要:[CastleComponent("GenericRepository", typeof(IRepository), Lifestyle = LifestyleType.Transient)] public class Repository : IRepository, IRepository { // some implementation } container.Register... 阅读全文
posted @ 2017-03-12 10:40 蓝平凡 阅读(352) 评论(0) 推荐(1)
摘要:应用程序中的很多组件都会依赖其他的服务组件,很多依赖一些不合法的组件或者容器中没有的组件,例如int类型、string类型、TimeSpan类型 Windsor支持以上的场景,注册API有DependsOn方法。该方法接收一个参数(由Dependency类的静态方法返回值提供) 1. 支持静态依赖 阅读全文
posted @ 2017-03-12 10:30 蓝平凡 阅读(620) 评论(0) 推荐(1)
摘要:注册多个组件 1.one-by-one注册组件可能是一项非常重复的工作,可以通过Classes或Types注册一组组件(你可以指定一些特定的特征) 三个步骤 注册多个类型通常采取以下结构 可以看成三个不同的步骤 1)选择程序集 第一步指定Windsor要扫描的程序集,可以使用如下方法(或者使用它的姊 阅读全文
posted @ 2017-03-11 19:19 蓝平凡 阅读(575) 评论(0) 推荐(1)
摘要:当使用XML配置的时候,可能要给组件指定各种各样的依赖 1。简单的参数 参数名称不区分大小写 简单的参数是指简单的类型,如基元类型,Uri,DateTime,TimeSpan,Type,Enum 或者 服务的重写,这些参数有它们值表达(简单的名称标签) 参数类型怎么匹配呢? Windsor不要求你指 阅读全文
posted @ 2017-03-11 18:39 蓝平凡 阅读(508) 评论(0) 推荐(1)
摘要:1。在容器中注册一个类型 2。注册一个非默认的类型(non-default service) 不用泛型 3.注册泛型类型 4.配置组件的生命周期 默认为单例 5.对同一个服务注册不同的组件 默认采取第一个组件 通过default方法设置默认组件 6。注册已有的对象 用已存在的对象注册,则忽略生命周期 阅读全文
posted @ 2017-03-11 02:21 蓝平凡 阅读(1188) 评论(0) 推荐(1)
摘要:使用xml配置和fluent注册两种搭配使用需要注意的是: 如果先在WindsorContainer构造函数指明用xml配置进行注册,如下设置 如果先用fluent注册,则如下设置 阅读全文
posted @ 2017-03-11 01:29 蓝平凡 阅读(412) 评论(0) 推荐(0)
摘要:当从xml引用installer的语法如下 Windsor允许你省略一部分命名规则。如 甚至可以省略命名空间。如 当使用如上的简写语法时,Windsor将试图在应用程序域中的程序集(不包括BCL程序集)查找类型。如果你加载一些特殊的程序集(例如不在编辑期间进行依赖的程序集), 你可以在xml文件中配 阅读全文
posted @ 2017-03-11 00:55 蓝平凡 阅读(320) 评论(0) 推荐(0)
摘要:翻译 当使用依赖注入容器时,你首先要向容器中注册你的组件,Windsor使用installers(该类型实现IWindsorInstaller接口)来封装和隔离注册的逻辑,可以使用Configuration和FromAssembly来完成工作。 Installers是实现了IWindsorInsta 阅读全文
posted @ 2017-03-11 00:26 蓝平凡 阅读(4225) 评论(0) 推荐(2)