我是实体框架的新手。我从数据库优先方法开始,该方法创建了与所选表相对应的类。我正在使用 WPF 。不幸的是,EF6映射类时发生了问题。字段的分配类型为 byte ,而在某些情况下,该值超过了字节限制。因此,我想用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; }
}
}
答案 0 :(得分:1)
因此,花了7个小时解决这个问题,我找到了正确的解决方案。您只需要在appconfig文件中设置用户映射规则即可。有关更多详细信息:visit this page。
答案 1 :(得分:0)
应该可以通过编辑edmx模型来更改类型:单击edmx模型内类的MEST
属性,然后在“属性”窗口中相应地设置“类型”并保存模型。
这样做会带来风险,因为如果您仅以这种方式更改类型,则可能会为列存储太大的值。您注意到您将Oracle用作基础数据库,因此EF为该属性生成“错误”类型很可能就是这种情况。
如果您完全确定数据库将接受扩展类型(int,double),那么应该安全地编辑属性,就像我在开始时提到的那样。否则,您将不得不更改数据库并重新生成类-您可能需要从模型中删除该类并再次添加它,因为并非所有对表的更改都被自动更新过程所吸收。