我目前使用的是IBM. martyFrameworkCore Verson 7.0.0.200。
我从数据库中选择一组记录。
这个表有主键和2个其他的备用键。我有问题的列(SEQ_CD)是其中一个备用键。它是一个smallint(2),不允许空值,也没有默认值。
我使用的API是.Net 7。
这就是我的背景
modelBuilder.Entity<MyClass>(e =>
{
e.ToTable("Table", "Schema");
e.HasKey(k => k.Cd);
e.HasAlternateKey(k => k.Dc);
e.HasAlternateKey(k => k.SeqCd);
e.Property(p => p.CD).HasColumnName("CD");
e.Property(p => p.DT).HasColumnName("DT");
e.Property(p => p.SEQ_CD).HasColumnName("SEQ_CD").HasColumnType("smallint(2)");
e.Property(p => p.CD_DS).HasColumnName("CD_DS");
});
字符串
我的班级是这样设置的:
namespace Project.Data.Db2.Models
{
public partial class MyClass
{
public string Cd { get; set; }
public DateTime fDt { get; set; }
public short SeqCd { get; set; }
[JsonConverter(typeof(TrimmedWhitespaceStringConverter))] //Used to trim the extra whitespace from the db2 character fields.
public string CD_DS{ get; set; }
}
}
型
根据以前的经验,我认为这是一个从Db2到. Net转换类型的问题。我已经检查了数据类型转换图表,我已经尝试了Int 16。我也尝试了短,因为这是我们正在更新的其他应用程序的类型。
不管我保存了多少值,当我检索该值时,它返回为SEQ_CD。我已经验证了数据库中的值是正确的。此外,我还设置了API以转储生成的linq,并使用linqpad从linq生成sql。当直接对数据库运行时,这两个查询都返回正确的值,并返回预期的结果集。是否需要添加某些内容我的背景还是我的课
TIA!
1条答案
按热度按时间cclgggtu1#
我终于能够使用IBM.martyFrameworkCore提供程序生成上下文了。一旦我这样做了,我就能够注解掉节,直到我打破它,然后向我现有的节添加节,直到它工作。
我发现我的问题是备用钥匙设置。
而不是使用
.HasAlternateKey
,它必须这样做:字符串
一旦我这样做了,它就从我的API返回了正确的值。