小编And*_*cik的帖子

Tinyint(字节),SmallInt(Int16)与EF5中的Enum不兼容

使用Database first设计并使用tinyint(或smallint)列:

[MyEnumColumn] [tinyint] NOT NULL
Run Code Online (Sandbox Code Playgroud)

我在EDM中将此列映射到枚举类型

External Type: NSpace.MyEnumType
Name:MyEnumType
UnderlyingType:Byte
Run Code Online (Sandbox Code Playgroud)

NSpace.MyEnumType的定义如下:

public enum MyEnumType 
{ One, Two, Three, All }
Run Code Online (Sandbox Code Playgroud)

仅在尝试从上下文加载实体时出现此错误:

指定的架构无效.错误:

对于概念类型"EntityDataModel.MyEnumType",找不到对应的对象层类型.

以下信息可能有助于解决以前的错误:

CLR枚举类型的基础类型与EDM枚举类型的基础类型不匹配.

如果我使用[Smallint]和[Int16]同样适用,但是一旦我将数据库更改为[Int]并将枚举类型更改为[Int32],错误就消失了.

当99.9%的时间内的枚举不超过256个项目或者我错过了其他内容时,为什么我需要将枚举值存储在4Byte(Int)数据字段而不是1Byte(Tinyint)中?

sqldatatypes entity-framework-5

24
推荐指数
1
解决办法
8821
查看次数

如何在 NestJS 中获取依赖树/图?

Nestjs 非常方便地提供了开箱即用的 DI 容器,但随着项目变得越来越复杂,很容易丢失所有依赖项及其顺序的全貌。

问题:有没有办法以可以放入树/图中的方式获取所有依赖项(模块、提供程序、控制器...)的列表?我确信 Nestjs 在内部跟踪这些信息,我想知道访问它的最佳方式是什么。

(我找到了[ nestjs-dependency-graph],但它手动扫描模块以获取元数据,没有找到所有依赖项,并且往往会进入无限循环)

dependency-injection nestjs

20
推荐指数
2
解决办法
9046
查看次数

T-SQL使用EXISTS作为列

我想知道我是否可以在列中使用EXISTS(或类似的东西),如下所示:

SELECT Column1,
       Column2,
       EXISTS (SELECT 1 FROM Table2 T2 WHERE T2.Column = T1.Column) AS IsFlag
FROM Table1
Run Code Online (Sandbox Code Playgroud)

我知道我可以用Count()做类似的事情

SELECT Column1,
       Column2,
       (SELECT Count(*) FROM Table2 T2 WHERE T2.Column = T1.Column) AS IsFlag
FROM Table1
Run Code Online (Sandbox Code Playgroud)

但是当Table2很大时,这可能不是很有效

t-sql sql-server exists

12
推荐指数
2
解决办法
4856
查看次数

Redux是编写reducer的更好方法?

我认为Redux具有很大的价值,但是对我来说,主要问题在于当今的reducer的编写方式:

const addToDoReducer = (state, action) => {
    switch (action.type) {
        case ADD_TODO:
            return Object.assign({}, state, {
                todos: todos(state.todos, action)
            })
        case TOGGLE_TODO:
            return Object.assign({}, state, {
                todos: todos(state.todos, action)
            })
        default:
            return state
    }
}
Run Code Online (Sandbox Code Playgroud)
  • 简化器太通用了(您可以写出this肿的简化器来处理各种不同的动作并容易造成混乱),如果这没有违反单一职责原则
  • switch语句施加维护方面的影响,例如对一种情况的更改可能会破坏其他情况(例如,已经有效的代码)
  • 始终重复“默认:返回状态”(失败DRY)
  • 所有的reducer总是被调用(调用函数什么都不做只是错误的)

...最终,减速器成为项目的薄弱环节

问:有没有更好的方法/选项来编写reducer:

  • 仅针对特定操作调用(基于操作对象的类型)
  • 消除了switch语句

像这样:

const addToDoReducer = (state:toDoState, action:addAction) =>
{
    return { ...state, toDos: [...state.toDos, action.toDoObject] };
}
Run Code Online (Sandbox Code Playgroud)

还是已经有这样做的图书馆?

typescript reactjs redux react-redux

5
推荐指数
1
解决办法
784
查看次数