.net学习之Attribute特性和EF关键知识点

一、Attribute特性/标签
1.Attribute用来对类、属性、方法等标注额外的信息,贴一个标签
简单的说,定制特性Attribute,本质上就是一个类,它为目标元素提供关联附加信息,并在运行时以反射的方式来获取附加信息。
[Obsolete("此方法已过时")]
public void SayHi()
{

}
加上Obsolete特性,当鼠标放到调用方法上的时候,就会提示此方法已过时
2.Attribute自定义特性类
Attribute就是类,Attribute类名一般都以Attribute结尾
不带数据的特性类
//定义 特性类
public class FlyAttribute : Attribute
{
}

//使用 自定义特性
[Fly] //或者 [FlyAttribute] 可省略 Attribute
puclic class Dog
{
}

带数据的特性类
//定义 特性类
public class FlyAttribute : Attribute
{
public string Name{get;set;}
public FlyAttribute(string strName)
{
this.Name = strName;
}
}

//使用 自定义特性
[Fly("小白")] //或者 [FlyAttribute] 可省略 Attribute
puclic class Dog
{
}

3.获取特性里的数据
通过反射获取
Dog d = new Dog();
Type dogType = d.GetType();
object [] attrs = t.GetCustomAttributes(typeof(FlyAttribute), false);
FlyAttribute dogAttr = attrs[0] as FlyAttribute;
string strName = dogAttr.Name;

二、EF
1.NHibernate不需要写sql语句;ibaties需要写sql语句,是半开放的持久层框架。
2.edmx文件解析
edmx定义三大部分,SSDL content(定义数据库部分)、CSDL content(定义C#类)、C-S mapping content(定义数据库和C#类之间的关系)
3.EF删除、修改
User u = new User(){id=1};
db.Users.Attach(u);
db.Users.Remove();
db.SaveChanges();

User u = new User(){id=1,UserName="aa"};
DbEntityEntry<User> entry = db.Entry<User>(u);
entry.State = EntityState.Unchanged;
entry.Property("UserName").IsModified = true;
db.SaveChanges();
4.延迟加载
IQueryable<UserAddress> addrs = db.UsersAddresses.Where(x=>x.userId = 1);//真实返回的是DbQuery对象,以接口的形式接收
当外键实体相同的时候,只会查询一次出来,不会再次查询
5.表内连接
IQueryable<UserAddress> addrs = db.UsersAddresses.Include("Users");
6.代理类对象
User user = db.Users.Where(u=>u.id=1).FirstOrDefault();//注意,此时返回的是一个User类的代理类对象(包装类对象)

.net学习之Attribute特性和EF关键知识点

时间: 2024-08-10 23:12:07

.net学习之Attribute特性和EF关键知识点的相关文章

mvc中利用Attribute特性来进行进行简单的登陆验证

前段时间一直比较忙.好不容易忙完.闲的没事干,就捣腾了下mvc(ef),因为以前都是用三层框架来进行开发,mvc用的也不是很多...众所周知,在三层里面我们一般都是建一个基类,然后在基类里面写验证登录方法,然后在需要验证登录的页面继承这个基类即可...但到了mvc里面所有的视图页面的操作都转移到了控制器了..这个时候我们在按照三层的方式建一个基类来继承验证登录,就没办法走通了...今天我就给大家来展示一个利用Attribute特性来验证登录.如果还有不知道这个东东的,可以百度一下Attribut

.NET进阶篇03-Reflection反射、Attribute特性

知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 内容目录 一.概述二.反射1.反射使用2.创建对象3.调用方法4.字段属性三.特性四.总结 一.概述 反射其实无处不在,我们用VS进行调试时候,查看成员列表.修改变量值都是通过反射来实现的.我们写业务代码可能很少去写反射,但理解反射是从菜鸟到大牛的必经之路.无论EF还是ASP.NET,几乎所有框架都用到反射.反射动态创建对象.动态赋值.动态调用方法. 前面简单介绍过.NET的第一次编译,会编译成IL(中间语言),反射就是利用IL在运行时获取

Attribute特性验证模型model

数据验证我们往往分为前台验证和后台验证,而我们的后台验证每到一个方法中就要去验证一次,这样的代码想想都难以维护,这篇我们这篇文章就是为了解决这样的问题.用attribute 这个特性来解决这样的问题 也将在这篇文章中告诉大家如何编写. 调用方式: UserService applictionService = container.Resolve<UserService>(); applictionService.AddUser(new User() { Name = "1"

CCIE学习笔记之特性集

etherchannel loadbalance  dst –mac 以太网隧道负载方式基于目标MAC MST (config)# spanning -tree mode mst (config)# spanning -tree mst configuration (config-mst )#  name CCIE (config-mst )#  instance 1 vlan 20,40,60 spanning -tree mst 3 root primary spanning -tree m

Shell学习之Shell特性(一)

Shell学习之Shell特性 目录 命令和文件自动补齐功能 命令历史记忆功能 history.上下键.!number.!string.!$.!! 别名功能 alias.unalias cp.~username/.bashrc.\cp -rf /etc/hosts 快捷键 ^R ^D ^A ^E ^L ^U ^K ^S ^Q 前后台作业控制 输入输出重定向 输入与输出 管道 | tee 命令排序 命令和文件自动补齐功能 这个不说了,我们在输入命令的时候,按tab键补全. 命令历史记忆功能  hi

学习数据库四大特性及事务隔离级别

学习数据库四大特性及事务隔离级别 一丶事务ACID四大特性 A(原子性Atomicity) : 事务是数据库的逻辑工作单位,事务里所有的操作要么全做,要么不做. C(一致性Consistency): 事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态. I(隔离性Isolation): 事务的执行不能被其他事务干扰. D(永久性Durability): 事务一旦提交,它对数据库中数据的改变就应该永久的. 二丶事务的隔离性 MySql存在4种隔离级别. 1.读未提交 Read Unco

关于js的一些关键知识点(call,apply,callee, caller,clourse,prototypeChain)

可能不少学习javascript在使用call,apply,callee时会感到困惑,以下希望对于你有所帮助: 1.~~~call ,apply是函数(函数对象)的方法:callee是函数arguments对象的属性 引用函数自身 2.~~~call,apply改变上下文对象this的指向 3.~~call apply方法让函数作为另一个对象的方法被调用 4.~~ apply方法只能接受数组作为参数 >> call f.call(o,1,2) 等同于o.m = f;o.m(1,2);例1:fu

鱼C《零基础入门学习Python》1—9节课时知识点总结

第一节:我和python的第一次亲密接触 0. Python 是什么类型的语言? 答:脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方式快速完成某些复杂的事情通常是创造脚本语言的重要原则,基于这项原则,使得脚本语言通常比 C语言.C++语言 或 Java 之类的系统编程语言要简单容易.也让脚本语言另有一些属于脚本语言的特性: 语法和结构通常比较简单 学习和使用通常比较简单 通常以容易修改程序的“解释”作为运行方式,而不需要

Java程序员必备:异常的十个关键知识点

前言 总结了Java异常十个关键知识点,面试或者工作中都有用哦,加油. 一. 异常是什么 异常是指阻止当前方法或作用域继续执行的问题.比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异常. 一个文件找不到的异常: public class TestException { public static void main(String[] args) throws IOException { InputStream is = new FileInputStream("jaywei.t