gpt4 book ai didi

entity-framework - Entity Framework 4 - 并不总是使用 ApplyCurrentValues 更新 bool 属性

转载 作者:行者123 更新时间:2023-12-03 07:34:53 26 4
gpt4 key购买 nike

我有一个简单的国家/地区实体,它是由 Entity Framework 4 使用 VS 2010 RC 生成的。它看起来类似于下面的 POCO。

public class Company
{
public int ID { get; set; }
public string Name { get; set; }
public string ISOCode { get; set; }
public boolean Active { get; set; }
}

我的存储库代码如下。 “db”是在构造函数中初始化的我的上下文。

public void EditCountry(Country countryToEdit)
{
db.Countries.Attach(new Country { ID = countryToEdit.ID });
db.Countries.ApplyCurrentValues(countryToEdit);
db.SaveChanges();
}

将 CountryToEdit 中的 Active 字段从 false 更改为 true 会生成以下 SQL

update [dbo].[Countries]
set [Name] = @0, [ISOCode] = @1, [Active] = @2
where ([ID] = @3)
@0 nvarchar(256),@1 nvarchar(12),@2 bit,@3 int,@0='Algeria',@1='DZ',@2=1,@3=4

这是预期的。

如果我将 CountryToEdit 中的 Active 字段从 true 更改为 false,则会生成以下 SQL

update [dbo].[Countries]
set [Name] = @0, [ISOCode] = @1
where ([ID] = @2)
@0 nvarchar(256),@1 nvarchar(12),@2 int,@0='Afghanistann',@1='AF',@2=1

没有尝试更新事件字段。

最佳答案

这个ApplyCurrentValues in EF 4问题有答案。

应该是

db.Countries.Attach(db.Countries.Single(c => c.ID == countryToEdit.ID));

如果附加空白 stub 对象,则 bool 字段将初始化为 false。 ApplyCurrentValues 调用发现 stub 和编辑对象之间的 bool 值没有变化。

上面的代码添加了另一个数据库查询,但我可以接受。

关于entity-framework - Entity Framework 4 - 并不总是使用 ApplyCurrentValues 更新 bool 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2264313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com