ASP.NET MVC3实体框架实体未正确更新

时间:2011-08-16 11:51:05

标签: entity-framework asp.net-mvc-3

我为与实体框架完全无关的东西制作了一个测试程序,我认为这很简单的集成变得很麻烦。我有一个名为“ TestEntry ”的数据库表,它包含四个数据字段[Id(唯一标识符),EId(uniqueidentifier),名称,数据],这些字段与任何其他数据库表无关,并且是独立的。< / p>

问题是一个简单的更新,定义如下:

    EDMEntities _db = new EDMEntities();

    public List<TestEntry> GetEntities()
    {
        return _db.TestEntries.ToList();
    }
    public void EditEntry(TestEntry newEntry)
    {
        TestEntry entry = _db.TestEntries.FirstOrDefault(e => e.Id == newEntry.Id);
        if (string.IsNullOrEmpty(newEntry.Name)) { entry.Name = newEntry.Name; }
        if (string.IsNullOrEmpty(newEntry.Data)) { entry.Data = newEntry.Data; }

        if (entry.EntityState == System.Data.EntityState.Modified)
        {
            _db.SaveChanges();
        }
    }

踩过它之后我注意到了:

  • 使用 newEntry
  • 中的值更新 entry.Name entry.Data
  • EntityState保持不变,因此未输入条件

关于这可能是什么的任何想法?

2 个答案:

答案 0 :(得分:2)

你需要否定条件。

if (!string.IsNullOrEmpty(newEntry.Name))

请注意感叹号。

答案 1 :(得分:2)

不应该是:

if (!string.IsNullOrEmpty(newEntry.Name)) { entry.Name = newEntry.Name; }
if (!string.IsNullOrEmpty(newEntry.Data)) { entry.Data = newEntry.Data; }