我想学习的LINQ to SQL。 我已经成功实施的插入方法和数据被越来越插入到数据库中。 当我尝试更新现有数据,它不会反映到数据库中,即使有也不例外。 能否请你穿上什么可能出了错一些轻?
注:账户号码是主键
编辑
下面的代码行使得它的工作。 但是,你能解释一下为什么我们需要一个刷新 ?
accountRepository.UpdateChangesByAttach(acc1);
accountRepository.RefreshEntity(acc1);
accountRepository.SubmitChanges();
注意:
DataContext.Refresh method refreshes object state by using data in the database.
刷新与KeepCurrentValues选项来完成。 我的理解是它会保留我在实体对象更新的值。 我提供(只),它需要在数据库中更新所需的信息。 需要此刷新获得剩余的列值?
客户
using (var context = new RepositoryLayer.LibraryManagementClassesDataContext(connectionstring))
{
context.Log = Console.Out;
RepositoryLayer.Repository<RepositoryLayer.Account> selectedRepository = new RepositoryLayer.Repository<RepositoryLayer.Account>();
//selectedRepository.Context = context;
AccountBusiness accountBl = new AccountBusiness(selectedRepository);
//Transaction 1
//List<RepositoryLayer.Account> accountList = accountBl.GetAllAccounts();
//Transaction 2
//accountBl.InsertAccounts();
//Transaction3
accountBl.UpdateAccounts();
}
业务层
public void InsertAccounts()
{
RepositoryLayer.Account acc1 = new RepositoryLayer.Account();
acc1.AccountNumber = 4;
acc1.AccountType = "Contract";
acc1.Duration = 6;
accountRepository.InsertOnSubmit(acc1);
accountRepository.SubmitChanges();
}
public void UpdateAccounts()
{
RepositoryLayer.Account acc1 = new RepositoryLayer.Account();
acc1.AccountNumber = 4;
acc1.AccountType = "TEST";
acc1.Duration = 10;
accountRepository.UpdateChangesByAttach(acc1);
accountRepository.SubmitChanges();
}
知识库
public class Repository<T> : IRepository<T> where T : class
{
public System.Data.Linq.DataContext Context
{
get;
set;
}
public virtual System.Data.Linq.ITable GetTable()
{
return Context.GetTable<T>();
}
public virtual void InsertOnSubmit(T entity)
{
GetTable().InsertOnSubmit(entity);
}
public virtual void UpdateChangesByAttach(T entity)
{
GetTable().Attach(entity);
}
public virtual void SubmitChanges()
{
Context.SubmitChanges();
}
public virtual void RefreshEntity(T entity)
{
Context.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, entity);
}
}
读
LINQ to SQL的:更新不刷新时“UpdateCheck的=从不”
LINQ to SQL的连接/刷新实体对象
什么是LINQ到SQL表<T> .Attach吗?
为什么要使用GetOriginalEntityState()在我的LINQ to SQL资料库保存方法?
我怎么能拒绝在LINQ到SQL的DataContext的所有更改?