我正在使用C#Entity Framework。我构建了以下属性如下:
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数据库中?
答案 0 :(得分:0)
将您的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
。
答案 1 :(得分:0)
实体框架中的主键名称为ID
或classnameID
。执行[DatabaseGeneratedOption(DatabaseGeneratedOption.Identity)]
时,它会自动从1递增,因为主键不能为零。如果您对主键有任何其他命名约定,则可以使用[key]
属性将其作为主键或更改命名约定。我猜这里_Cashid
没有被识别为主键,因此它可以为null,因此它会增加为零。我希望这有助于解决问题。