Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将一个属性的值设置为包含主键的属性的值_C#_Entity Framework - Fatal编程技术网

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

C# 将一个属性的值设置为包含主键的属性的值,c#,entity-framework,C#,Entity Framework,我使用的是C#实体框架。我已构建以下属性,如下所示: private int _CashTransactNO; [DatabaseGeneratedOption(DatabaseGeneratedOption.Identity)] public int CashId { get; set; } public int CashTransactNO { get { return _CashTransactNO; } set { _CashTransactN

我使用的是C#实体框架。我已构建以下属性,如下所示:

private int _CashTransactNO;

[DatabaseGeneratedOption(DatabaseGeneratedOption.Identity)]
public int CashId { get; set; }

public int CashTransactNO
{
    get { return _CashTransactNO; }
    set
    {
        _CashTransactNO = CashId;
    }
}
当我运行windows窗体应用程序时。”“CashTransactionNo”始终返回零的值,而不是从“CashId”生成的主键
有没有办法解决这个问题,这样我就可以将递增的键值传递到“cashtransalno”并保存到MSSQL数据库中?

将您的
public int CashId{get;set;}
更改为:

private int _CashId;
[DatabaseGeneratedOption(DatabaseGeneratedOption.Identity)]
public int CashId {
    get
    {
         return _CashId;
    }
    set
    {
         _CashId = value;
         CashTransactNO = _CashId;
    }
}
然后您可以留下您的
现金交易记录no
如下:

public int cashtransactionno{get;private set;}


不需要
\u cashtransalno

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

也许我遗漏了什么,但为什么不在CashTransactionNo的getter中返回CashId,然后删除private setter?另外……您正在呼叫private setter吗?我在上面的代码中没有看到它,必须调用它才能将值更改为零以外的任何值。更大的图景是什么使这样做成为必要的?一个仅吞下其输入的
值的setter是。。。疯子对于其余部分,您可能只是遇到了在
SaveChanges
之前未分配
CashId
的情况。也尝试过这样做,CashId的值反映在CashTransact属性中,但数据库中的值仍然为零。同一类中的所有其他属性正在更新其值,正如EF中SaveChages()方法中所预期的那样,但数据库中的Transact列为零@RobertOmete您应该更新您的问题,将您要保存的详细信息包括在数据库中。@DavidSherret您是对的。更重要的是,由于我无法在C中生成函数,因此插入时自动递增,因此最好以现有Id列为基础