Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 属性类型错误的模型_C#_Oracle_Entity Framework - Fatal编程技术网

C# 属性类型错误的模型

C# 属性类型错误的模型,c#,oracle,entity-framework,C#,Oracle,Entity Framework,我不熟悉实体框架。我从数据库优先的方法开始,它创建了与我选择的表对应的类。我正在使用WPF。不幸的是,在EF6映射类时出现了一个问题。为字段分配的类型为字节,而在某些情况下,该值超过字节约束。所以,我想用int或double替换它。如何在不更改所用数据库的情况下更改模型字段类型 namespace DataChrome{ public partial class REGISTRY_MEST{ public byte MEST { get; set; } //Wrong typed f

我不熟悉实体框架。我从数据库优先的方法开始,它创建了与我选择的表对应的类。我正在使用WPF。不幸的是,在EF6映射类时出现了一个问题。为字段分配的类型为字节,而在某些情况下,该值超过字节约束。所以,我想用int或double替换它。如何在不更改所用数据库的情况下更改模型字段类型

namespace DataChrome{
  public partial class REGISTRY_MEST{
    public byte MEST { get; set; } //Wrong typed field 
    public string MESTNAME { get; set; }
    public Nullable<byte> IDSTRAT { get; set; }
    public Nullable<int> MESTOLD { get; set; }
  }

}

通过编辑edmx模型可以更改类型:单击edmx模型内类的MEST属性,然后在属性窗口中相应地设置类型并保存模型

这样做会有风险,因为如果这样更改类型,可能会为列存储太大的值。您注意到您正在使用Oracle作为基础数据库,因此很可能是EF为该属性生成了错误的类型


如果您绝对确定DB将接受扩展类型int,double,那么按照我在开始时提到的那样编辑属性应该是安全的。否则,您将不得不更改数据库并重新生成类-您可能需要从模型中删除类并再次添加,因为并不是表的所有更改都会通过自动更新过程获取。

因此,在7个小时的时间内,我找到了正确的解决方案。您所需要的只是在appconfig文件中设置用户映射规则。有关更多详细信息:。

因为它是数据库第一,您不能更改数据库吗?是的!根据@Stefan的建议,您需要更新数据库表中的数据类型,并更新项目中的模型,因为您使用的是数据库优先的方法。谢谢问题是我不可能更改init db。我想知道是否有其他选择?您能指出我应该使用哪些类属性吗?从你的评论来看还不太清楚