将一个属性的值设置为包含主键的属性的值

本文关键字:属性 设置 包含主 一个 | 更新日期: 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

实体框架中的主键名称是IDclassnameID。当您执行[DatabaseGeneratedOption(DatabaseGeneratedOption.Identity)]时,它会自动从1开始递增,因为主键不能为零。如果您对主键有任何其他命名约定,您可以使用[key]属性使其成为主键或更改命名约定。我猜这里的_Cashid没有被标识为主键,所以它可以是空的,所以它以零递增。我希望这有助于解决问题。