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

时间:2015-05-20 18:01:10

标签: c# entity-framework

我正在使用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数据库中?

2 个答案:

答案 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)

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