jaf*_*ffa 3 integration-testing entity-framework code-first automapper
我想创建一个集成测试,它从数据库中抓取EF实体,将其克隆到分离的对象,修改它然后将其保存回来并再次将其与原始对象进行比较.
但是,我使用AutoMapper来创建类的克隆,但事实证明它也被跟踪或是原始对象的别名.我需要它与EF完全分离,并且能够在我的存储库类之外执行此操作(即不使用任何EF分离方法).
这样做的原因是我的EF类包含其他类的嵌套集合,EF不处理持久化整个对象树.因此,我的存储库类中的Update()方法处理这个问题,我希望我的NUnit测试来测试这段代码.我希望测试能够快速创建原始类的副本而无需EF跟踪它.
创建包含当前值,原始值或数据库值的克隆对象从CurrentValues,OriginalValues或GetDatabaseValues返回的DbPropertyValues对象可用于创建实体的克隆.此克隆将包含用于创建它的DbPropertyValues对象的属性值.例如:
Run Code Online (Sandbox Code Playgroud)using (var context = new UnicornsContext()) { var unicorn = context.Unicorns.Find(1); var clonedUnicorn = context.Entry(unicorn).GetDatabaseValues().ToObject(); }请注意,返回的对象不是实体,并且未被上下文跟踪.返回的对象也没有任何关系设置为其他对象.
克隆的对象可用于解决与数据库的并发更新相关的问题,尤其是在使用涉及绑定到特定类型的对象的数据的UI的情况下.(有关处理乐观并发的更多详细信息,请参阅第9部分.)
希望它可以帮助别人
| 归档时间: |
|
| 查看次数: |
3486 次 |
| 最近记录: |