我有以下情况:
然后我扩展了我的部分类并创建了一个具有 GetAll 和其他方法的 Finder 类。您可以在下面看到:
您可以在下面看到我正在使用一个包含所有类的存储库的工作单元类来从通用存储库中获取实例:
protected Repository<Category> _CategoryRepository;
public Repository<Category> CategoryRepository
{
get { return _CategoryRepository ?? (_CategoryRepository = new Repository<Category>(context)); }
}
所以通过这种方式,我有不同的存储库,当从 db 获取实体并从不同的上下文更新它时会导致问题。所以我用这种方法来进行上下文生命周期管理。它解决了这个问题。
现在我面临的问题在以下代码中:
var cat = Instance.Category.GetSingle(c => c.CategoryID == 7);
var orignal = cat.CategoryName;
var expected = cat.CategoryName + " Test Catg Update";
cat.CategoryName = expected;
cat.Update(); //This doesn't actually update due to a validation in place (which is correct)
cat = Instance.Category.GetSingle(c => c.CategoryID == 7);
Assert.AreEqual(cat.CategoryName, expected);
当我使用更新并且其中有一些验证器时,更新失败(例如,由于字符串的大小超过 15 个字符)。当我再次尝试调用 GetSingle(上述代码的最后第二行)时,它给我带来了相同的旧记录,即 [cat.CategoryName + "Test Catg Update"]。这是正常的方式吗?如果不是,如何解决这个问题,以便我可以从数据库中重新加载对象。
如果您需要任何其他代码或参考,请告诉我。