将一个属性的值设置为包含主键的属性的值
本文关键字:属性 设置 包含主 一个 | 更新日期: 2023-09-27 17:50:13
我使用c#实体框架。我已经构造了如下属性:
private int _CashTransactNO;
[DatabaseGeneratedOption(DatabaseGeneratedOption.Identity)]
public int CashId { get; set; }
public int CashTransactNO
{
get { return _CashTransactNO; }
set
{
_CashTransactNO = CashId;
}
}
当我运行windows窗体应用程序时。'CashTransactNO'总是返回零值,而不是从'CashId'生成的主键。有任何想法如何解决这个问题,以便我可以将递增的键值传递给CashTransactNO并保存在MSSQL数据库中?
将public int CashId { get; set; }
更改为:
private int _CashId;
[DatabaseGeneratedOption(DatabaseGeneratedOption.Identity)]
public int CashId {
get
{
return _CashId;
}
set
{
_CashId = value;
CashTransactNO = _CashId;
}
}
然后你可以留下你的CashTransactNO
像
public int CashTransactNO { get; private set; }
不需要_CashTransactNO
实体框架中的主键名称是ID
或classnameID
。当您执行[DatabaseGeneratedOption(DatabaseGeneratedOption.Identity)]
时,它会自动从1开始递增,因为主键不能为零。如果您对主键有任何其他命名约定,您可以使用[key]
属性使其成为主键或更改命名约定。我猜这里的_Cashid
没有被标识为主键,所以它可以是空的,所以它以零递增。我希望这有助于解决问题。