7月17日学习日记

今天学习的目标换成了 asp.net mvc 模式

半年之前有学习了解过 asp.net mvc 本来以为这次会很轻松。
但是实际上还是非常的混乱。 今天在网上找了一套源码来研究。
开始到最后报错。找不到.netframework data previder的请求。
当然,根据网上的三种方法。

1.直接下载安装

失败

2.将ef的server文件放到Bin之下

失败

3.更改config文件

失败

这个问题纠结了我一个晚上,但是还没得到解决方法。
但是我对ef的使用产生了困惑。决定来写一个Demo继续感知。

以下是我在https://www.cnblogs.com/caoyc/p/5821639.html中找到的部分有用的地方

在EF中实体的五种状态:

1、detached:实体不在上下文的追踪范围内。如刚new的实例处于detached,可以通过Attach()添加到上下文,此时的状态是unchanged。

2、unchanged:未改变,如刚从数据库读出来的实例

3、added:添加状态 一般执行 db.Set.Add(t)/ AddRange(ts)时标记为added。因为新对象在数据库中没有相应的记录,所有不能转成deleted和modified状态。

4、deleted:删除状态 一般执行 db.Set.Remove(t)/ RemoveRange(ts)时标记为deleted。数据库中必须先有了相应的记录,所有deleted不能转为added状态。

5、modified:修改状态 改变了实体的属性处于这个状态,可以转为deleted,不能转为added状态。

当EF从数据库中提取一条记录生成一个实体对象之后,应用程序可以针对它的操作太多了,EF是怎么知道哪个对象处于哪个状态的?

EF的解决方案是:为当前所有需要跟踪的实体对象,创建一个相应的DbEntityEntry对象,此对象包容着实体对象每个属性的三个值:Current Value、Original Value和Database Value,只要比较这三个值,很容易地就知道哪个属性值被修改了(设置:context.Configuration.AutoDetectChangesEnabled = false则不会去追踪,默认是打开的),从而生成相应的Sql命令。对象的状态会随着操作而改变,我们也可以自己指定状态
  以及代码

2             DbEntityEntry userEntry = context.Entry(user);
3             userEntry.State = EntityState.Added;//添加标记
4             userEntry.State = EntityState.Deleted;//删除标记
5             userEntry.State = EntityState.Modified;//修改标记
6             userEntry.State = EntityState.Unchanged;//无变化标记
7             userEntry.State = EntityState.Detached;//不追踪标记

感觉到有点东西了,我的本地数据库也快要装好了。可以开始了。
借鉴了一下https://blog.csdn.net/qq_33459121/article/details/81559793中的Demo
意识到我一直弄不明白的数据库库连接可以只用用localdb然后通过里面的字符串拷贝即可。
今天geigei 全都白费 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值