C# 阅读->;消费->;更新
我正在使用生产者-多消费者模式 数据库中已有记录C# 阅读->;消费->;更新,c#,entity-framework,.net-4.0,C#,Entity Framework,.net 4.0,我正在使用生产者-多消费者模式 数据库中已有记录 生产者读取记录并将其放入线程安全队列 使用者线程逐个处理记录并向其中添加更多数据 现在生产者必须用消费者提供的新数据更新数据库中的记录 我是实体框架的新手,不知道使用什么方法来正确更新这些记录 我已经读到,我可以从数据库中选择一个记录列表,直接编辑字段,然后在上下文对象上调用SaveChanges。但我怀疑一些消费者会在编辑列表中的一些属性中间。 < P>试试这个。第一个示例显示如何更新单个记录,第二个示例显示如何使用记录列表进行更新。您可以从列
我已经读到,我可以从数据库中选择一个记录列表,直接编辑字段,然后在上下文对象上调用
SaveChanges
。但我怀疑一些消费者会在编辑列表中的一些属性中间。 < P>试试这个。第一个示例显示如何更新单个记录,第二个示例显示如何使用记录列表进行更新。您可以从列表中的任何对象添加或删除所需的数据,只要这些数据属于数据模型中的类型即可。然后调用数据库上下文并遍历列表中的每个对象。使用SaveChanges()更新数据库
公共列表MyCustomers{get;set;}
公众客户()
{
使用(var context=new salesscontext())
{
var customers=来自上下文中的b.customers
选择b;
MyCustomers=customers.ToList();
}
}
更改密码()的公共无效方法
{
}
public void UpdateDatabase()
{
使用(var context=new salesscontext())
{
foreach(MyCustomers中的var人员)
{
context.Customers.Add(person);
}
SaveChanges();
}
}
谢谢!但是,你好像没读我的问题。。。我想读取队列中的一些记录,让使用者向其中添加数据,然后将其更新回数据库。当您说队列时,您指的是从数据库拉入IEnumerable的对象吗?是的,正确。拉入enumerable,然后通过调用ToList()转换为List为什么消费者不能更新数据库?可以吗?我不确定从myltiple线程用相同的上下文更新db是否好。阅读EF文档。。我希望在这种情况下能迅速得到最佳实践的建议。
public List<Customer> MyCustomers { get; set; }
public void GetCustomers()
{
using(var context = new SalesContext())
{
var customers = from b in context.Customers
select b;
MyCustomers = customers.ToList<Customer>();
}
}
public void MethodThatChangesCustomers()
{
}
public void UpdateDatabase()
{
using(var context = new SalesContext())
{
foreach (var person in MyCustomers)
{
context.Customers.Add(person);
}
context.SaveChanges();
}
}