【问题标题】:Entity Framework C# change value in table by id实体框架 C# 按 id 更改表中的值
【发布时间】:2015-04-12 16:22:19
【问题描述】:

我有遗产和合同表。 Estate 表具有布尔属性(可用)。当客户确认他们的合同时,Estate 表中的可用属性将其值更改为 false。 Estate 从组合框中按 EstateID 进行选择。问题是我不知道如何通过在 EstateCombobox 中选择的 ID 访问可用属性。

contract.ContractDate = Convert.ToDateTime(ContractDateTextBox.Text);
            contract.OperationType = OperationTypeComboBox.SelectedItem.ToString();
            contract.Description = DescriptionTextBox.Text;
            contract.EstateID = Convert.ToInt32(EstateComboBox.SelectedValue);
            contract.ClientID = Convert.ToInt32(ClientComboBox.SelectedValue);
            contract.EmployeeID = Convert.ToInt32(EmployeeComboBox.SelectedValue);
            contract.NewOwnerID = Convert.ToInt32(NewClientOwnerComboBox.SelectedValue)



EstateComboBox.DataSource = AgencyContext.Estate.ToList();
        EstateComboBox.DisplayMember = "EstateName";
        EstateComboBox.ValueMember = "EstateID";
        EstateComboBox.Invalidate();

【问题讨论】:

    标签: c# winforms linq entity-framework lambda


    【解决方案1】:

    希望我理解正确:

    int eid = Convert.ToInt32(EstateComboBox.SelectedValue.ToString());
    var myEstate = AgencyContext.Estate.Single(e => e.EstateID == eid);
    
    myEstate.Available = false; //new value
    
    dbcontext.SaveChanges();
    

    【讨论】:

    • 部分错误 Select(e => e.EstateID == EstateComboBox.SelectedValue) 编译器显示警告:“无法将运算符'=='应用于操作数类型'int'和'object'”
    • 这次编译器将 'e' 标记为错误:参数名称 'e' 不能在此范围内声明,因为它与已在父范围或当前范围中使用的 'e' 具有不同的含义表示别的东西
    • e 更改为其他内容,它与另一个变量冲突。让它ee
    • 你能解释一下我们从这个表达式中得到了什么吗?如果我理解正确,我们会得到 EstateID,但我现在如何将可用属性更改为 false?
    • @qr11 你能看到我的新代码吗?您需要使用 dbcontext 类的 SaveChanges 方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 2012-07-11
    • 2018-12-31
    • 2011-07-24
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多