相关疑难解决方法(0)

实体框架5更新记录

我一直在探索在ASP.NET MVC3环境中编辑/更新实体框架5中的记录的不同方法,但到目前为止,它们都没有勾选我需要的所有框.我会解释原因.

我找到了三种方法,我将提到它的优点和缺点:

方法1 - 加载原始记录,更新每个属性

var original = db.Users.Find(updatedUser.UserId);

if (original != null)
{
    original.BusinessEntityId = updatedUser.BusinessEntityId;
    original.Email = updatedUser.Email;
    original.EmployeeId = updatedUser.EmployeeId;
    original.Forename = updatedUser.Forename;
    original.Surname = updatedUser.Surname;
    original.Telephone = updatedUser.Telephone;
    original.Title = updatedUser.Title;
    original.Fax = updatedUser.Fax;
    original.ASPNetUserId = updatedUser.ASPNetUserId;
    db.SaveChanges();
}    
Run Code Online (Sandbox Code Playgroud)

优点

  • 可以指定更改哪些属性
  • 视图不需要包含每个属性

缺点

  • 在数据库上进行2次查询以加载原始数据然后更新它

方法2 - 加载原始记录,设置更改的值

var original = db.Users.Find(updatedUser.UserId);

if (original != null)
{
    db.Entry(original).CurrentValues.SetValues(updatedUser);
    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

优点

  • 仅将已修改的属性发送到数据库

缺点

  • 视图需要包含每个属性
  • 在数据库上进行2次查询以加载原始数据然后更新它

方法3 - 附加更新的记录并将状态设置为EntityState.Modified

db.Users.Attach(updatedUser);
db.Entry(updatedUser).State = EntityState.Modified;
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

优点

  • 1 x查询数据库以进行更新 …

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

856
推荐指数
5
解决办法
43万
查看次数

如何将参数传递给DbContext.Database.ExecuteSqlCommand方法?

让我们假设我有一个在Entity Framework中直接执行sql命令的有效需求.我无法弄清楚如何在我的sql语句中使用参数.以下示例(不是我的实例)不起作用.

var firstName = "John";
var id = 12;
var sql = @"Update [User] SET FirstName = @FirstName WHERE Id = @Id";
ctx.Database.ExecuteSqlCommand(sql, firstName, id);
Run Code Online (Sandbox Code Playgroud)

ExecuteSqlCommand方法不允许您传入ADO.Net中的命名参数,并且此方法文档未提供有关如何执行参数化查询的任何示例.

如何正确指定参数?

entity-framework entity-framework-4.1

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

如何使用Entity Framework仅更新一个字段?

这是桌子

用户

UserId
UserName
Password
EmailAddress
Run Code Online (Sandbox Code Playgroud)

和代码..

public void ChangePassword(int userId, string password){
//code to update the password..
}
Run Code Online (Sandbox Code Playgroud)

sql entity field entity-framework-4 dbcontext

180
推荐指数
10
解决办法
18万
查看次数

context.Entry()在哪里?

我通过阅读本文和许多其他文章编写了我自己的上下文,但没有一个主题解释了这个context.Entry(obj)定义的位置,我的意思是即使阅读本文,我也无法理解如何实现此方法,并且我得到以下错误:

错误36'Domain.Entities.OurWebSiteContext'不包含'Entry'的定义,并且没有扩展方法'Entry'可以找到接受类型为'Domain.Entities.OurWebSiteContext'的第一个参数(你是否缺少using指令或者装配参考?)

请有人帮帮我

编辑>>

 public class OurWebSiteContext : DbContext
    {
        public OurWebSiteContext(string connString)
            : base(connString)
        {

        }

        public DbSet<Article> Articles { get; set; }
        public DbSet<Category> Categories { get; set; }
        public DbSet<Comment> Comments { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

entity-framework

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

实体框架DbContext更新值无需查询和外键

I have a method for updating some tables. For update I need get first of TestProcess, but I don't like that. How can I update TestProcess without select(firstOrDefault) operation, used only for the update operation?

Example of method:

public void UpdateTestProcess(int id, string updateID)
{
    using (TestEntities context = new TestEntities())
                {
                    TestProcess pr = context.TestProcess.FirstOrDefault(x => x.MyID == id);
                    pr.UpdateID = updateID;             

                    context.TestProcess.Attach(pr);
                    context.ObjectStateManager.ChangeObjectState(pr, EntityState.Modified);
                    context.SaveChanges();
               }
}
Run Code Online (Sandbox Code Playgroud)

c# updates dbcontext entity-framework-5

4
推荐指数
1
解决办法
7039
查看次数

更新EF 4.1中的记录

我有一个员工对象说:

public class Employee
{
    public int Id {get; set;}
    public int Name {get; set;}
    public int Address {get; set;}

 ...other few 10's of properties
}
Run Code Online (Sandbox Code Playgroud)

问题是我如何才更新Name?例如.如果我想更新姓名我做

Employee e = Db.Employees.Where(e => e.Id == someId).SingleOrDefault();
e.Name = "Jack";
Db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

如您所见,为了更新,我必须首先获取对象然后更新,然后调用SaveChanges().对于可以在对数据库的单个查询中完成的任务,我必须触发2个查询:1)获取对象2)更新所需对象并保存更改.

对于传统的存储过程方法,我只需传递Id,传递新的Name并编写Update语句,我就完成了.实体框架真的效率低下还是我错过了什么?

.net c# sql entity-framework entity-framework-4.1

3
推荐指数
1
解决办法
413
查看次数