gpt4 book ai didi

c# - EF 核心实体数据访问中的无效转换

转载 作者:太空宇宙 更新时间:2023-11-03 20:47:42 25 4
gpt4 key购买 nike

我在使用 Entity Framework 核心在我的 .net 核心服务中接收实体时遇到问题。当我尝试访问 dbset 时,选择数据并导致异常时,就会发生问题。

我正在尝试像这样访问我的数据库集: Access of the customers db set

当我检查 _dbContext.Customers 结果 View 时,我看到以下错误: The cast error

所以看起来有些数据转换不起作用。我不明白的是为什么会这样。我已经检查了我的模型和我的数据库实体,一切都应该没问题......

这是我的代码:

型号:

[Table("customers")]
public class Customer
{
[Column("id")]
public int Id { get; set; }
[Column("code")]
public string Code { get; set; }
[Column("card_num")]
public string CardNum { get; set; }
[Column("is_valid")]
public bool IsValid { get; set; }
[Column("valid_from")]
public DateTime ValidFrom { get; set; }
[Column("valid_to")]
public DateTime ValidTo { get; set; }
[Column("card_type")]
public CardType CardType { get; set; }
[Column("prepay_balance_cash")]
public decimal PrepayBalanceCash { get; set; }
[Column("prepay_limit_low")]
public decimal PrepayLimitLow { get; set; }
[Column("prepay_limit_high")]
public decimal PrepayLimitHigh { get; set; }
[Column("bc_contract_number")]
public string BcContractNumber { get; set; }
}

public enum CardType
{
Credit = 1,
Prepayment = 2,
PrepaymentAndCredit = 3,
Identification = 4,
CreditAndPrepayment = 5
}

数据库上下文:

public DbSet<Customer> Customers { get; set; }

protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<Customer>().HasKey(c => c.Id);
}

数据库表:

Database table part 1

...

Database table part 2

我真的不明白。我不知道为什么会这样,我有一些其他表以完全相同的方式实现,并且按预期工作。只有这个没有。

有人知道出了什么问题吗?

最好的问候

最佳答案

Card_Type 列定义为 numeric(1,0),它将被映射为 Decimal,如果可能,您的 Enum 将是 Int 类型,将数据库列更改为 INT。

如果您使用的是 EF Core 2,那么请尝试在 OnModelCreating 中添加一个转换器,

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

没试过所以语法可能不对。但是让数据库本地存储正确的类型会提高性能。

关于c# - EF 核心实体数据访问中的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59173595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com