在我的场景中,我在序列化实体框架中的对象上有一个 MVC ,其中我已经覆盖 GetHashCode 和 Equal 方法,因为< strong>这些对象的Id在提交到数据库后是不可变的。
我也有一些客户端,无法访问数据库,但连接到iis以通过json序列化这些实体并使用newtonsoft.json在本地反序列化。
当我第二次在客户端反序列化它们时,为了刷新它们中的数据,我希望现有的实例能够自动更新。
我期待有点太多了? 我应该编写一些克隆方法来复制属性并检查现有ID的缓存吗? 我在 Equal 和 GetHashCode 方法中写错了什么?
例如:
下一步是什么?将新实例名称复制到旧实例名称,有更好的方法吗?
答案 0 :(得分:0)
是的,你期望太多了。您可以附加新实体(因为实体框架上下文不知道该实体,因为您从dbcontext之外的某处获取它)然后保存它。
回答here
//This place is where you can deserialize your entity
var existingBlog = new Blog { BlogId = 1, Name = "ADO.NET Blog" };
using (var context = new BloggingContext())
{
context.Blogs.Attach(existingBlog);
// Do some more work...
context.SaveChanges();
}
答案 1 :(得分:0)
我认为最好的解决方案是拥有两个数据库一个服务器端和一个客户端,具有相同的共享实体框架但具有不同的连接字符串,json.net设置了保持对象引用并仅使用网络来同步数据库然后在客户端查询。