EF错误 - 属性是对象的关键信息的一部分,无法修改。

时间:2016-05-25 12:36:15

标签: wpf entity-framework

目前我正在开发一个我正在使用Entity Framework代码的应用程序。

我有一个TransactionDetails类,如下所示

[Table("TransactionDetails")]
    public class TransactionDetails
    {
[DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None)]
    [Key]
    public int? TransactionRow { get; set; }
    public int? TransactionID { get; set; }
    public int AccountID { get; set; }
    public string AccountType { get; set; }
    public DateTime TransactionDate { get; set; }
    public float Credit { get; set; }
    public float Debit { get; set; }
}

此外,我正在尝试将记录插入到表格中,其中插入代码如下所示

setTransactionID();
            try
            {
                bankingApplicationDBContext.transactiondetails.Add(_creditTransaction);
                bankingApplicationDBContext.SaveChanges();
                bankingApplicationDBContext.transactiondetails.Add(_debitTransaction);
                bankingApplicationDBContext.SaveChanges();


            }

            catch (Exception ex)
            {

            }

其中_creditTransaction和_debitTransaction是Transaction Details类的两个不同对象。

方法setTransactionID()也包含以下代码。

public void setTransactionID()
        {
            try
            {
                int TransactionID = Convert.ToInt32(bankingApplicationDBContext.transactiondetails.Max(x => x.TransactionID)) + 1;

                int TransactionRow = Convert.ToInt32(bankingApplicationDBContext.transactiondetails.Max(x => x.TransactionRow)) + 1;

                _creditTransaction.TransactionRow = TransactionRow;
                _creditTransaction.TransactionID = TransactionID;

                _debitTransaction.TransactionRow = TransactionRow + 1;
                _debitTransaction.TransactionID = TransactionID;
            }
            catch(Exception ex)
            {
                throw ex;
            }

        }

当我在表单中输入字段时,我生成的TransactionRow和TransactionID字段作为自动生成的字段和对象的其余属性被分配。

现在问题是这些对象第一次正确插入数据,但是当对象_creditTransaction和_debitTransaction的实例处于活动状态并且我尝试第二次插入数据时,它会给出错误消息

属性“TransactionRow”是对象密钥信息的一部分,无法修改。

任何人都可以帮我解决这个问题。

谢谢。

0 个答案:

没有答案