EF(dbfirst)可以用到winForm吗?

LvBao_117 2019-09-07 12:03:50
ef在web开发中,可以说是大显身手,增删改查操作太方便了。
那么,在winForm里呢?
如何生成实体类、输入框、输入验证这些,最好举例或者相关学习资源,谢谢
...全文
1472 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
看了一遍 回答的人都是半斤八两,而我就不同了,我一点儿都不懂



我用的是WPF,我的思路是,获取DBContent之后,生成一个全局的Entity,这个ENtity可牛逼了,数据库所有的字段属性都在里面,而WPF所有的控件的resource都可以指向这个Entity,显示的时候指定key就可以了。


WPF是数据驱动,不知道winform的事件驱动能不能用这个思路。


good luck
Dear200892 2019-09-11
  • 打赏
  • 举报
回复
如果你不想偷懒,可以再鼠标移出输入框事件 判断字符串长度,并提示用户
¿?¿? 2019-09-11
  • 打赏
  • 举报
回复
EF是基于ado实现的,ADO能在winform用到吗?答案是肯定可以,那EF呢 ,也可以
正怒月神 2019-09-11
  • 打赏
  • 举报
回复
引用 20 楼 楠小南 的回复:
[quote=引用 14 楼 正怒月神 的回复:] [quote=引用 13 楼 wanghui0380 的回复:] [quote=引用 12 楼 正怒月神 的回复:] 你说的这个,我倒是在.net mvc里知道有。。。 但是我很久不用.net mvc框架了。
没错,只能说目前应付过去了,只是当需要修改的时候,怎么办?半夜爬起来,打开vs,修改验证,重新上传么? 本来这里没后面什么事情的,结果,反到把自己坑进去了[/quote] 基本这种东西都前台弄了,后台或许会再次验证。 不过.net mvc自带的这种,应该用的人不多了。[/quote] 他这种绑定是很那个的,一大堆 data 属性,而且core 还是英文的 ! 一般我都自己重写,把data 全部去除,干净[/quote]
引用 20 楼 楠小南 的回复:
[quote=引用 14 楼 正怒月神 的回复:] [quote=引用 13 楼 wanghui0380 的回复:] [quote=引用 12 楼 正怒月神 的回复:] 你说的这个,我倒是在.net mvc里知道有。。。 但是我很久不用.net mvc框架了。
没错,只能说目前应付过去了,只是当需要修改的时候,怎么办?半夜爬起来,打开vs,修改验证,重新上传么? 本来这里没后面什么事情的,结果,反到把自己坑进去了[/quote] 基本这种东西都前台弄了,后台或许会再次验证。 不过.net mvc自带的这种,应该用的人不多了。[/quote] 他这种绑定是很那个的,一大堆 data 属性,而且core 还是英文的 ! 一般我都自己重写,把data 全部去除,干净[/quote] 其实整个.net mvc框架耦合度就太高了
LvBao_117 2019-09-11
  • 打赏
  • 举报
回复
感谢各位老师的指导
秋的红果实 2019-09-11
  • 打赏
  • 举报
回复
没有你说的那种,但使用EF还是有点优势的,例如

using (tmpDBEntities tmpDB = new tmpDBEntities())
            {
                tmpT tmp = new tmpT()
                {
                    Name = "1234567890",
                    Height = 200,
                    Weight = 100,
                    Name2 = "name2",
                    RegTime = DateTime.Now

                };

                tmpDB.tmpT.Add(tmp);
                tmpDB.SaveChanges();

            }
你不用写一条sql语句,不用考虑注入等,还是很方便的 验证只好逐个控件写了,例如输入框只能输入整数,可以在焦点离开框时用正则判断处理 你想象中的Model,那是MVC的东西,form暂时没有
LvBao_117 2019-09-10
  • 打赏
  • 举报
回复
感谢各位老师的指导,不过不是我要的,请看#1我的问题
楠小南 2019-09-10
  • 打赏
  • 举报
回复
引用 14 楼 正怒月神 的回复:
[quote=引用 13 楼 wanghui0380 的回复:]
[quote=引用 12 楼 正怒月神 的回复:]
你说的这个,我倒是在.net mvc里知道有。。。
但是我很久不用.net mvc框架了。


没错,只能说目前应付过去了,只是当需要修改的时候,怎么办?半夜爬起来,打开vs,修改验证,重新上传么?

本来这里没后面什么事情的,结果,反到把自己坑进去了[/quote]
基本这种东西都前台弄了,后台或许会再次验证。
不过.net mvc自带的这种,应该用的人不多了。[/quote]

他这种绑定是很那个的,一大堆 data 属性,而且core 还是英文的 ! 一般我都自己重写,把data 全部去除,干净
小灰灰城堡 2019-09-10
  • 打赏
  • 举报
回复
必须可以啊,EF是一个独立的ORM框架,是ADO.NET的升级版,只与数据库打交道
  • 打赏
  • 举报
回复
引用 楼主 LvBao_117的回复:
ef在web开发中,可以说是大显身手,增删改查操作太方便了。
那么,在winForm里呢?
如何生成实体类、输入框、输入验证这些,最好举例或者相关学习资源,谢谢
我不小心把蠕虫 复制粘贴到起点 为什么删除不了
皮皮熊_1989 2019-09-10
  • 打赏
  • 举报
回复
引用 1 楼 LvBao_117 的回复:
加100分,并且自己顶下 现在已经可以生成实体类了,关键是属性怎么体现到界面?如

[MaxLength(10,ErrorMessage ="最多20个字符")]
        public string Name { get; set; }
实体类中一个字段Name最大长度设置为10,这个怎么体现到界面?当输入长度超过10时,提示“最多20个字符” 还有,界面上的控件,怎么才能自动增加,而不是一个一个往上拖
EF自身对应的数据对象,和前端展示的对象,不要混用,哪怕他们很多属性都一模一样; EF对象可标记为XXXXEntity结尾,前端要用的模型或者业务模型,XXXModel/XXXSearchModel/XXXRecordModel类似这样; 如果不想自己手动把一个对象赋值到另一个对象,推荐你看看AutoMap映射,简单粗暴。
皮皮熊_1989 2019-09-10
  • 打赏
  • 举报
回复
EF dbfirst 其实只是访问数据库的事,跟你客户端是winform还是wpf还是用的webApi或者别的什么并没一毛钱关系的
正怒月神 2019-09-10
  • 打赏
  • 举报
回复
主要还是,.net mvc这个框架本来也太耦合了。
正怒月神 2019-09-10
  • 打赏
  • 举报
回复
引用 13 楼 wanghui0380 的回复:
[quote=引用 12 楼 正怒月神 的回复:] 你说的这个,我倒是在.net mvc里知道有。。。 但是我很久不用.net mvc框架了。
没错,只能说目前应付过去了,只是当需要修改的时候,怎么办?半夜爬起来,打开vs,修改验证,重新上传么? 本来这里没后面什么事情的,结果,反到把自己坑进去了[/quote] 基本这种东西都前台弄了,后台或许会再次验证。 不过.net mvc自带的这种,应该用的人不多了。
wanghui0380 2019-09-10
  • 打赏
  • 举报
回复
引用 12 楼 正怒月神 的回复:
你说的这个,我倒是在.net mvc里知道有。。。 但是我很久不用.net mvc框架了。
没错,只能说目前应付过去了,只是当需要修改的时候,怎么办?半夜爬起来,打开vs,修改验证,重新上传么? 本来这里没后面什么事情的,结果,反到把自己坑进去了
正怒月神 2019-09-10
  • 打赏
  • 举报
回复
你说的这个,我倒是在.net mvc里知道有。。。 但是我很久不用.net mvc框架了。
wanghui0380 2019-09-10
  • 打赏
  • 举报
回复
有,但是你不会用。 从net1.0时代就存在的东西(毕竟net的设计者最早就是微软从宝兰公司挖的做dephi的兄弟)----你看见vs IDE有一块菜单,叫服务器资源+数据源没有,这里的东西其实就是可以拖出来的。但是除了学校老师教学用用,实际项目里,没人会用。 这个你想了解,可以直接看msdn的示例与演练部分。 但是这个不符号现代软件设计,道理很简单---------UI从来就是变化最快的地方,在一个变化最快的地方,你想偷懒你想拖出来就搞,很明确的说,最近30年但凡有这种想法的全部失败 在这里尝试最多是js,那么请上眼 propteryJs-------失败产品 easyUI-------失败产品 fineUI----------失败产品 为啥现在会流行vue,angrljs,原因很简单,数据是数据(模型),显示是显示(模板),逻辑是逻辑(动作,路由)。别妄想他他混一块,上面那么多失败的妄图混到一块的,结果你看到了。 变化化就应该让他有足够的自由,让他自由变化。 你把自己捆住手脚了,还变个啥 比如你这个要求,似乎好像你简单了???简单了么-------不会简单的。他变化快,那么请你24小时保持手机开机状态,qq,钉钉也请开着,因为你的产品经理会随时随地让你修改这个验证条件和展示方式的。 so,原本你可以躺着睡觉的,现在你得跟着做UI的一起,半夜起来加个班,所以简单了么?
  • 打赏
  • 举报
回复
引用 1 楼 LvBao_117 的回复:
加100分,并且自己顶下 现在已经可以生成实体类了,关键是属性怎么体现到界面?如

[MaxLength(10,ErrorMessage ="最多20个字符")]
        public string Name { get; set; }
实体类中一个字段Name最大长度设置为10,这个怎么体现到界面?当输入长度超过10时,提示“最多20个字符” 还有,界面上的控件,怎么才能自动增加,而不是一个一个往上拖
没有这种功能,你可以自己制作一个自动生产界面的方法,有一个主要原因是ide不可能知道你的界面上到底要什么控件,是要文本框还是下拉选择框呢?是要图片展示还是lable呢?所以给你可以绑定的控件自己绑定。
github_36000833 2019-09-08
  • 打赏
  • 举报
回复
如果你不想用MessageBox,那么Winform下也经常用ErrorProvider组件。 【ErrorProvider 组件概述(Windows 窗体)】 https://docs.microsoft.com/zh-cn/dotnet/framework/winforms/controls/errorprovider-component-overview-windows-forms
github_36000833 2019-09-08
  • 打赏
  • 举报
回复
DbContext支持GetValidationErrors。 假设你的DbContext变量叫db,那么在db.SaveChanges()保存改动前,你可以调用GetValidationErrors来进行校验。

...
var errors = db.GetValidationErrors().SelectMany(ves => ves.ValidationErrors).ToList();
if (errors.Any())
{
    foreach (var error in errors)
    {
        MessageBox.Show(error.PropertyName + " 错误: " + error.ErrorMessage);
    }
}
else
{
    db.SaveChanges();  // 提交数据库
}
加载更多回复(6)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧