相关疑难解决方法(0)

如何使用Entity Framework 6更新记录?

我正在尝试使用EF6更新记录.首先找到记录,如果存在,则更新它.这是我的代码: -

var book = new Model.Book
{
    BookNumber =  _book.BookNumber,
    BookName = _book.BookName,
    BookTitle = _book.BookTitle,
};
using (var db = new MyContextDB())
{
    var result = db.Books.SingleOrDefault(b => b.BookNumber == bookNumber);
    if (result != null)
    {
        try
        {
            db.Books.Attach(book);
            db.Entry(book).State = EntityState.Modified;
            db.SaveChanges();
        }
        catch (Exception ex)
        {
            throw;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

每次我尝试使用上面的代码更新记录时,我收到此错误: -

{System.Data.Entity.Infrastructure.DbUpdateConcurrencyException:存储更新,插入或删除语句影响了意外的行数(0).自实体加载后,实体可能已被修改或删除.刷新ObjectStateManager entrie

c# entity-framework ef-database-first entity-framework-6

227
推荐指数
10
解决办法
48万
查看次数

更新行如果存在其他插入逻辑与实体框架

有没有人建议使用实体框架实现"更新行,如果它存在其他插入"逻辑的最有效方法?

c# entity-framework

166
推荐指数
5
解决办法
14万
查看次数

在没有先查询的情况下更新记录?

让我们说我查询数据库并加载项目列表.然后我打开详细视图表单中的一个项目,而不是从数据库中重新查询该项目,我从列表中的数据源创建项目的实例.

有没有办法可以更新数据库记录而无需获取单个项目的记录?

以下是我现在正在做的一个示例:

dataItem itemToUpdate = (from t in dataEntity.items
                                 where t.id == id
                                 select t).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

然后在拉动记录后,我更新项目中的一些值并将记录推回:

itemToUpdate.itemstatus = newStatus;
dataEntity.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

我认为有更好的方法可以做到这一点,任何想法?

c# entity-framework

90
推荐指数
6
解决办法
6万
查看次数

在实体框架6中保存分离的实体

我已经阅读了很多关于在Entity Framework中保存分离实体的帖子.所有这些似乎都适用于旧版本的Entity Framework.它们引用了似乎不存在的ApplyCurrentValues和ChangeObjectState等方法.一时兴起,我决定尝试通过intellisense找到的方法,我想确保这是正确的方法,因为我无法看到幕后发生的事情:

public void SaveOrder(Order order)
{
    using (VirtualWebEntities db = new VirtualWebEntities())
    {
        db.Orders.Attach(order);
        db.Entry(order).State = System.Data.Entity.EntityState.Modified;
        db.SaveChanges();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是更新已更改的现有项目的正确方法吗?

c# entity-framework entity-framework-6

54
推荐指数
1
解决办法
5万
查看次数

我可以使用Entity Framework Version 6或7自动更新对象及其子对象吗?

我有三张桌子.单词 - > WordForm - > SampleSentence.每个Word都有不同WordForms,然后每个表格可以有一个或多个SampleSentence

CREATE TABLE [dbo].[Word] (
    [WordId]       VARCHAR (20) NOT NULL,
    [CategoryId]   INT          DEFAULT ((1)) NOT NULL,
    [GroupId]      INT          DEFAULT ((1)) NOT NULL,
    PRIMARY KEY CLUSTERED ([WordId] ASC),
    CONSTRAINT [FK_WordWordCategory] FOREIGN KEY ([CategoryId]) REFERENCES [dbo].[WordCategory] ([WordCategoryId]),
    CONSTRAINT [FK_WordWordGroup] FOREIGN KEY ([GroupId]) REFERENCES [dbo].[WordGroup] ([WordGroupId])
);

CREATE TABLE [dbo].[WordForm] (
    [WordFormId]   VARCHAR (20)  NOT NULL,
    [WordId]       VARCHAR (20)  NOT NULL,
    [Primary]      BIT           DEFAULT ((0)) NOT NULL,
    [PosId]        INT           NOT NULL,
    [Definition] …
Run Code Online (Sandbox Code Playgroud)

c# asp.net entity-framework

22
推荐指数
2
解决办法
824
查看次数

实体框架6.1更新记录的子集

我有一个视图模型,只封装了一些数据库模型属性.视图模型包含的这些属性是我想要更新的唯一属性.我希望其他属性保留其价值.

在我的研究过程中,我发现这个 答案看起来很适合我的需求,但是,尽管我付出了最大的努力,但我无法让代码按预期工作.

这是我想出的一个孤立的例子:

static void Main() {
    // Person with ID 1 already exists in database.

    // 1. Update the Age and Name.
    Person person = new Person();
    person.Id = 1;
    person.Age = 18;
    person.Name = "Alex";

    // 2. Do not update the NI. I want to preserve that value.
    // person.NINumber = "123456";

    Update(person);
}

static void Update(Person updatedPerson) {
    var context = new PersonContext();

    context.Persons.Attach(updatedPerson);
    var entry = context.Entry(updatedPerson);

    entry.Property(e => e.Name).IsModified = true; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-6.1

15
推荐指数
1
解决办法
1万
查看次数

在MVC上执行Edit时如何保留某些字段的原始值?

如您所知,当我们想要修改数据时,我们将转到编辑页面:

public ActionResult EditAdmin(int UserId)
{ 
        User user = persons.Users.Find(id);
        return View(user);
}
Run Code Online (Sandbox Code Playgroud)

然后我们在编辑页面上提交它,它将修改:

public ActionResult EditAdmin(User user)
{ 
        persons.Entry(user).State = EntityState.Modified;
        persons.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

但问题是,我有很多字段不需要修改:

public class User{
    public int UserId {get; set;} // do not need modify
    public int Password {get; set;} // do not need modify
    public string Name {get; set;}
    public bool Sex {get; set;}
    public DateTime AddTime {get; set;} // do not need modify
}
Run Code Online (Sandbox Code Playgroud)

显然,我无法在我的编辑页面上显示某些字段使用隐藏,因为我不希望它在UI上显示.但是当提交时,我仍然需要它仍然保留原始值.那么它有什么好主意吗?谢谢

UPDATE1:

为什么我不能用

entry.Property(e => …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-mvc entity-framework

13
推荐指数
3
解决办法
3万
查看次数

在实体框架中更新实体的最佳方式

我是实体框架的新手,我正在使用Nhibernate.在Nhibernate更新对象时,传递id不是必需的,你只需传递实体,Nhibernate就自己匹配id并更新实体.在EF我正在使用这个aprouch:

        protected virtual bool UpdateEntity(TEntity entity, int id)
        {
          using (var ctx = new GenericContext())
          {
              var list = ctx.Set<TEntity>().ToList();
              ctx.Entry<TEntity>(ctx.Set<TEntity>  ().Find(id)).CurrentValues.SetValues(entity);
              return ctx.SaveChanges() > 0;
        }
       }
Run Code Online (Sandbox Code Playgroud)

这需要id来更新实体.这是最好的aprouch吗?有一些方法来更新实体只是在没有找到它的情况下传递实体?

c# entity-framework

3
推荐指数
2
解决办法
2万
查看次数

实体框架在c#中按id更新记录

我是新用的Entity框架

我怎样才能将其转换为实体框架c#
query = "update cachieroperation set last_used = getdate()+'0:8:0' where id = 14"

c# entity-framework

0
推荐指数
1
解决办法
2122
查看次数