相关疑难解决方法(0)

如何在C#中克隆通用列表?

我在C#中有一个通用的对象列表,并希望克隆列表.列表中的项目是可复制的,但似乎没有选项可做list.Clone().

有一个简单的方法吗?

c# generics clone list

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

DbContext丢弃更改而不进行处理

我有一个桌面客户端应用程序,它使用模态窗口来设置分层对象的属性.由于这是一个客户端应用程序,并且没有线程化对DbContext的访问,我在主Form上使用长时间运行的上下文传递给模态子项.

这些模态窗口使用PropertyGrid显示实体属性,还具有取消按钮.如果修改了任何数据并按下了取消按钮,则更改将反映在父表单中(我无法处理DbContext object).

如果DbContext.SaveChanges()没有调用该方法,有没有办法丢弃所做的任何更改?

更新:实体框架版本4.4.

.net c# entity-framework undo dbcontext

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

如何在使用EF代码的.SaveChanges()期间记录所有实体更改?

使用EF代码.此外,我正在为我的所有存储库使用基本存储库,并IUnitofWork注入存储库:

public interface IUnitOfWork : IDisposable
{
    IDbSet<TEntity> Set<TEntity>() where TEntity : class;
    int SaveChanges();
}

public class BaseRepository<T> where T : class
{
    protected readonly DbContext _dbContext;
    protected readonly IDbSet<T> _dbSet;


    public BaseRepository(IUnitOfWork uow)
    {
        _dbContext = (DbContext)uow;
        _dbSet = uow.Set<T>();
    }
    //other methods
}   
Run Code Online (Sandbox Code Playgroud)

例如,我OrderRepository是这样的:

class OrderRepository: BaseRepository<Order>
{
    IUnitOfWork _uow;
    IDbSet<Order> _order;

    public OrderRepository(IUnitOfWork uow)
        : base(uow)
    {
        _uow = uow;
        _order = _uow.Set<Order>();
    }
    //other methods
}
Run Code Online (Sandbox Code Playgroud)

我用这种方式使用它: …

c# logging repository ef-code-first dbcontext

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

EntityFramework和TransactionScope不一致

我正在开发一个使用Entity Framework 4.0的组件.

在特定情况下,我需要使用a TransactionScope.

try
{
    using (TransactionScope t = new TransactionScope())
    {
        myEntity.MyObjectsOne.Add(new MyObjectOne());
        myEntity.MyObjectsTwo.Add(new MyObjectTwo());

        myEntity.SaveChanges();

        throw new Exception();

        t.Complete();
    }
}
catch (Exception e)
{
    // What should I do?
}
Run Code Online (Sandbox Code Playgroud)

当事务失败并因此未完成时,myEntity仍将反映所做的更改,即添加MyObjectOneMyObjectTwo.

在这种情况下,为了避免不一致,最佳做法是什么?

c# entity-framework transactionscope

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