How to save state across requests for an entity in ASP.NET without saving to database using EntityFramework?

心不动则不痛 提交于 2019-12-30 10:44:59

问题


I'm working on a CRUD ASP.NET WebForms web application consisting of a couple of pages in which the user fills in data. My client doesn't want to store the entities in the database between pages until the user clicks Finish on the last page (for various reasons). What options are there to propagate the filled in data between the pages and which is the least bad? From my readings I've seen that ViewState and Server.Transfer can be used. Any other options, preferably using less magic strings and more type safe data binding to entity objects?


回答1:


Using ViewState is going to significantly increase the amount of data your sending down the wire, as all Viewstate data is serialised into a hidden input in the form, so as you add objects your HTTP request-response is going to grow significantly.

There's no magic bullet in this really. If your data is not too complex I'd store the values in the query string. If your objects are getting complex and big and you want to maintain type safety I'd use Session, but remember to clean up after yourself!

a further option is to use the MVC paradigm and store the values in the form it's self using hidden inputs. This means you don't need to worry about clearing up your session if the user bugs out half way though but it also keeps your querystring clean.

think thats all your options, querystring, viewstate(don't do it), session or hidden variables.

Ok so you have to seraialise your data, so you cannot persist the context. this is not serialiseable so the above are your options:

they each have positive and negatives,

  • Viewstate (inefficent but easy to use)
  • Querystring (efficent but impractical for large data sets and editable)
  • Session(adds server load and needs cleaning up but allows you to persist data on the server only)
  • hidden variables(hidden from user but more efficient than viewstate requires a lot of hidden inputs for each property)

Take your pick!




回答2:


You can store all objects used in the client application in the Session and then when the user clicks finish you send those objects to a service/method where you can convert them to entities and then submit them to the database.




回答3:


Use MemCached.
there are tons of examples on the internet.
Try this :
Implementing Distributed Caching using Memcached



来源:https://stackoverflow.com/questions/13802404/how-to-save-state-across-requests-for-an-entity-in-asp-net-without-saving-to-dat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!