300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 在.NET Core类库中使用EF Core迁移数据库到SQL Server办法_实用技巧

在.NET Core类库中使用EF Core迁移数据库到SQL Server办法_实用技巧

时间:2023-02-15 22:33:13

相关推荐

在.NET Core类库中使用EF Core迁移数据库到SQL Server办法_实用技巧

后端开发|C#.Net教程

.NET,Core,迁移

后端开发-C#.Net教程

本篇文章主要介绍了ReactNative中使用Redux架构总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。对.NET感兴趣的朋友一起跟随小编过来看看吧

vb源码怎么用,vscode自带主题,ubuntu查找文件,myeclipse添加tomcat,c 封装sqlite,深圳市网页设计公司,jsp语言 数据库,西部数码服务器重置,jsp各种表格插件,前端开发框架选型,国外爬虫,php登录注册,seo培训机构,springboot列表分页,phpcms v9标签大全,防嘻嘻哈哈网站源码,展示图片的网页,b2b 模板, 企业网站后台管理系统源码,页面搜索特效,个人相册管理系统,意淘宝客qq空间应用程序lzw

本文介绍了ReactNative中使用Redux架构总结,分享给大家。具体如下:

刻章网站源码,vscode为什么很卡,Ubuntu下载相机,tomcat 重新启动,whoscored爬虫,php 数组原理,潮州网络推广seo优化,单页网站html5 源码,网页模板带js特效的lzw

使用Redux也有一段时间了。总结一下。

powerbuilder 会员管理系统源码,ubuntu下找回引导,爬虫协议的执行,php商场,seo的建议lzw

为什么要使用Redux?

背景:

RN的state(可变,子组件不可见)和props(不可变,子组件可见)的设计,在面对大型项目时候,容易因为不经意修改state造成状态混乱,组件渲染错误

RN使用了Virtual DOM,不需要Target绑定->Action修改UI属性,只要当状态变化,render新状态下的组件,数据单向传递,而MVC的设计模式存在双向数据流。

RN不易进行测试,Redux提供了非常方便的mock测试方式。

Redux开发

开发环境

安装Redux: ‘npm install –save redux’

安装React Native和Redux绑定库:npm install –save react-redux

安装Redux Thunk异步Action中间件:npm install –save redux-thunk

三个原则

单一数据源

整个应用的 state 被储存在一个对象树中,对象树存在于唯一的 store 中。store中的 state 绑定到组件

State 是只读的

惟一改变 state 的方法就是触发 action。action 是一个含有 type 属性的普通JS对象,type 可以用常量表示事件。

使用纯函数来执行修改

编写 reducers 来描述对应action如何修改 state 。一般可以用 switch(action.type) 来处理,无副作用

使用

react-redux提供了connect和Provider。

1.Provider是顶层的分发点,属性就是Store,将State分发给所有被connect的组件

2.connect:接受两个参数:一个是mapStateToProps或者mapDispatchToProps,一个是要绑定的组件本身。

Store

Store 就是把 Reducer 和 action 联系到一起的对象。Store 有以下职责:

维持应用的 state–类似数据库,存储应用的所有state。

提供 getState() 方法。获取 所有的当前state;

提供 dispatch(action) 方法更新 state,相当于存入数据库,存入action来改变state。

通过 subscribe(listener) 注册监听器。

Store本质上是一个对象,它以树的形式保存了整个应用的State。并提供了一些方法。例如getState( ) 和 dispatch( )。

Redux应用只有惟一一个Store。

Store通过createStore方法来创建,根据整个应用的根Reducer的初始State。

代码如下:

import { createStore, applyMiddleware } from edux;import thunk from edux-thunk;//异步import reducers from ./reducers;const Store = applyMiddleware(thunk)(createStore)(reducers);export default Store;

Reducers

Action只是描述了有事情发生了这一事实,并没有指明应用如何更新state。这是reducer要做的事情。

Reducer的本质是一个函数,并且是一个纯函数。没有任何副作用。简单来讲Reducer只负责做一件事,就是根据接收到的action和state来修改Store中的state:

(state, action) => newState

一般实现的时候,通过switch(action.type) 来判断不同的Action,default为旧state。同时可以定义初始状态。

代码:

import { combineReducers } from edux;const newState = (state = {}, action = {}) => { switch (action.type) { case ActionTypes.CSTATE: return { ...state, ...action.state }; case \_DPDATACHANGE_: return {...state, ...action.dpState}; default: return state; }};//Reducer 合并export default combineReducers({ newState,});

注意:返回的是新state,如果需要保留部分旧state值,使用…state(ES7的对象展开语法,对对象会浅拷贝对应属性,这里等价于Object.assign({}, state, newState)),而如果合并state的话只会合并一层,对复杂state需要手动合并。

Action

Action是一个普通JS对象,至少包括一个type属性代表事件,其他属性可以用来传递数据。实践上对一个流程定义一个函数,流程可以包括网络请求,最后返回Action,这个函数叫Action Creator。

代码:Store可以dispatch这个Action,action的type表示标识符,state是它携带的数据。

export const newState = state => { Store.dispatch({ type: ActionTypes.CSTATE, state, });};

持久化

当触发action时根据其reducer key恢复数据,然后只需要在应用启动时分发action,这也很容易抽象成可配置的拓展服务,实际上三方库redux-persist已经为我们做好了这一切。

在Action中可以代码如下:

export const getStorage = async (key) => { const d = await AsyncStorage.getItem(key); return JSON.parse(d);};export const setStorage = (key, value) => { AsyncStorage.setItem(key, JSON.stringify(value));};

connect

通过- 提供 getState() 方法。获取 所有的当前state

通过connect,绑定需要的state以及Action Creator到你的组件的props上,这样组件就可以通过props来调用Action Creator,或者根据不同props来render()不同的组件。

代码:

mapStateToProps({ newState }) {const value = newState[name];//name: newState.namereturn { name,};},

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。