C# EF核心实体数据访问中的强制转换无效

C# EF核心实体数据访问中的强制转换无效,c#,database,.net-core,model,entity-framework-core,C#,Database,.net Core,Model,Entity Framework Core,我在使用entity framework core接收.net core服务中的实体时遇到问题。 选择数据时会出现问题,并在尝试访问数据库集时导致异常 我正在尝试访问我的数据库集,如下所示: 当我检查_dbContext.Customers results视图时,我看到以下错误: 所以,似乎有些数据转换不起作用。我不明白为什么会这样。我已经检查了我的模型和数据库实体,一切都应该很好 这是我的密码: 型号: [表格客户] 公共类客户 { [专栏ID] 公共int Id{get;set;} [

我在使用entity framework core接收.net core服务中的实体时遇到问题。 选择数据时会出现问题,并在尝试访问数据库集时导致异常

我正在尝试访问我的数据库集,如下所示:

当我检查_dbContext.Customers results视图时,我看到以下错误:

所以,似乎有些数据转换不起作用。我不明白为什么会这样。我已经检查了我的模型和数据库实体,一切都应该很好

这是我的密码:

型号:

[表格客户] 公共类客户 { [专栏ID] 公共int Id{get;set;} [栏目代码] 公共字符串代码{get;set;} [Columncard_num] 公共字符串CardNum{get;set;} [有效] 公共bool有效{get;set;} [从中选择有效的列] public DateTime ValidFrom{get;set;} [栏目有效至] 公共日期时间有效到{get;set;} [柱状卡片类型] 公共CardType CardType{get;set;} [预付款\余额\现金] 公共余额现金{get;set;} [预付款限额低] 公共十进制限制流{get;set;} [预付款限额高] 公共十进制高{get;set;} [合同编号栏] 公共字符串BcContractNumber{get;set;} } 公共枚举卡片类型 { 信用=1, 预付款=2, 预付款和信用=3, 标识=4, 贷项和预付款=5 } 数据库上下文:

公共数据库集客户{get;set;} 在ModelCreatingModelBuilder上受保护的覆盖无效 { base.OnModelCreatingbuilder; builder.Entity.HasKeyc=>c.Id; } 数据库表:

我真的不明白。我不知道为什么会发生这种情况,我已经用与预期完全相同的方式实现了一些其他表。只是这一个没有

有人知道怎么了吗


致以最诚挚的问候

请按照此处所述在模型中设置精度

也可以尝试使用此更改

  [Column("card_type")]
  public Decimal CardType { get; set; }

尝试按此处所述在模型中设置精度

也可以尝试使用此更改

  [Column("card_type")]
  public Decimal CardType { get; set; }

CardType属性明显可疑。我假设card_type numeric1,0和enum值中的问题是Int32类型。

CardType属性显然值得怀疑。我假设card_类型numeric1,0和枚举值中的问题是Int32类型。

列card_类型定义为numeric1,0,它将映射为十进制,并且您的枚举将是Int类型。如果可能,请将数据库列更改为Int

如果您使用EF Core 2,请尝试在OnModelCreating中添加转换器

modelBuilder
    .Entity<Customer>()
    .Property(e => e.CardType)
    .HasConversion<decimal>();

未尝试,因此语法可能已关闭。但是,让数据库以本地方式存储正确的类型更有效

列卡片类型被定义为numeric1,0,它将被映射为十进制,并且您的枚举将是Int类型(如果可能),请将数据库列更改为Int

如果您使用EF Core 2,请尝试在OnModelCreating中添加转换器

modelBuilder
    .Entity<Customer>()
    .Property(e => e.CardType)
    .HasConversion<decimal>();

未尝试,因此语法可能已关闭。但是,让数据库以本地方式存储正确的类型更有效

我使用根据给定数据库环境选择的托管mssql和托管oracle驱动程序。这对两种数据库环境都有效吗?应该有效,尽管另一个答案很可能是正确的。我错过了CardType。从模型中删除card_type不会影响结果,因此我想我将尝试您的解决方案。您可以使用?操作人员i、 e.`公共日期时间?ValidFrom{get;set;}`您可能还希望检查是否有更好的设计。我使用根据给定数据库环境选择的托管mssql和托管oracle驱动程序。这对两种数据库环境都有效吗?应该有效,尽管另一个答案很可能是正确的。我错过了CardType。从模型中删除card_type不会影响结果,因此我想我将尝试您的解决方案。您可以使用?操作人员i、 e.`公共日期时间?ValidFrom{get;set;}`您可能还想检查是否有更好的设计。我还认为它将首先是枚举,因此我已尝试在没有card_类型的情况下加载它,不幸的是,同样的行为。我还认为它将首先是枚举,因此我已尝试在没有card_类型的情况下加载它,不幸的是,同样的行为。这似乎有效,但现在我的IsValid字段也有转换问题。是否有属性方法来定义字段的转换方式?这似乎可行,但现在我的IsValid字段也存在转换问题。是否有属性方法来定义字段的转换方式?