ASP.NET站点架构问题
由于我正在设计的网站的设计方式的性质,我有一个问题,我现在必须解决.
我将尝试将此问题编写为与语言无关的问题,但该站点是使用C#在ASP.Net中完成的. 概观 对于任何给定的“对象”,我们网站的结构如下所示: > ASPX页面 >多个UserControls(ascx页面) >文本框,组合框,标签, 这意味着,如果我们有一个用户页面,那么该页面可能有3个UserControls.一个用于用户信息(姓名,电子邮件等),一个用于地址(城市,州,邮编等),一个用于区域设置(时区,语言等) 3个UserControl上的所有这些字段都存储在数据库的同一个表中. 现在,我们使用DataBinding和EntityFrameworks来填充数据,这意味着当我们保存对象时,我们实际上正在调用save 3次(每个UserControl 1次).
因为UserControl只知道它包含的字段,所以当数据绑定保存它“认为”时,其他字段现在都是空白的. (即地址控制保存,现在“电子邮件”和“名称”为空值).为了“修复”这个,有一个名为“MapOldToNew”的方法,该方法熄灭并抓取旧记录并填写即将保存的New对象的值.这是通用的,这意味着我们在地址用户控件上没有一个方法,即“获取名称和电子邮件字段并将其填入”,而是循环遍历实体(对象)的所有属性,如果是值在New对象上为NULL但在Old对象上是NOT NULL(当前在数据库中将要覆盖的对象),它将使New值等于Old值. 问题 日期.我们在数据库中允许NULL日期. 如果用户填写“生日”并保存,则他们现在在数据库的字段中具有生日值. 解决方案? >重做我们的系统不使用 这些是我脑子里想出的想法.为了论证,让我们假设#1是不可能的(因为我觉得管理层不会喜欢完成所需的时间). 你会如何“修复”这个? 另一种解释 这是解决问题的更多问题. { Name = NULL,BirthDate = 8/13/1980 } MapOldToNew查看数据库记录并看到Name应该是“Bob”,因此它填充了值并保存了记录. UserControl2现在调用Update,User对象如下所示: { Name = "John",BirthDate = NULL } MapOldToNew看到BirthDate为NULL,因此它从数据库中用8/13/1980覆盖它,并且记录保存并且数据库具有正确的值. 现在假设用户返回并删除BirthDate值.当UserControl2调用MapOldToNew时,它会看到BirthDate为NULL(用户想要的)并从数据库中覆盖它. 解决方法
我会重构MapOldToNew来理解可空类型.我假设您有一个可以为空的日期(例如,日期时间?或Nullable,如果是这样的话 – 如果为空则不要假设覆盖.
同样在将来考虑MVC或WebForms考虑动态数据,因为类型映射到模型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 遭遇Asp.Net长文件名下载的问题和解决办法
- asp.net-mvc – ASP.NET MVC2和MemberShipProvider:它们如
- asp.net – Dropdownlist在Page_ClientValidate()之后不回发
- asp.net核心 – 为什么验证类型 – .NET Core中的Web API的
- asp.net-mvc – 如何在发布MVC应用程序时包含自定义文件夹?
- 敏感词汇过滤DFA算法
- asp.net – 谷歌浏览器在浏览器关闭后保留会话变量
- asp.net-core – 包恢复失败.回滚包更改
- 深度探秘.NET 5
- asp.net-mvc – ActionLink无法在“if”块内渲染
- asp.net – 为什么我的主机(softsyshosting.com)
- asp.net – 在localhost中将IIS设置为Web开发服务
- asp.net-mvc – 如何正确识别vs2008版本级别?
- Asp.net MVC实现生成Excel并下载功能
- asp.net-mvc – 从基本控制器继承LINQ-to-SQL数据
- asp.net – 为什么DataBind()方法是必要的?
- 使用asp.net统计在线用户
- asp.net – 如何使用Eval更改TemplateField中的颜
- ASP.NET System.Data.EntityClient连接字符串帮助
- asp.net中.aspx页面中各种符号的含义