EF Code First模式是否有直接快速编写model的工具

yb00k 2015-02-27 11:22:18
最近在研究MVC,其中有这个CODEFIRST模式 通过实体生成对应的数据库方式;感觉如果有个工具可视化编写输入名称、数据验证、长度之类,然后在生成这个实体代码感觉会快速轻松很多;看书上都是通过手敲代码,太繁琐了。

不知道各位大侠些知道有没有类似工具提供。
...全文
555 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
编程有钱人了 2015-03-02
  • 打赏
  • 举报
回复
引用 25 楼 wyd1520 的回复:
[quote=引用 24 楼 wangjun8868 的回复:] [quote=引用 23 楼 wyd1520 的回复:] [quote=引用 22 楼 wangjun8868 的回复:] [quote=引用 9 楼 wyd1520 的回复:] EF的配置也是麻烦的,建议用ServiceStack.orm吧,这个东西就不错。
ServiceStack.orm怎么配置数据连接引擎 如何根据现有的表生成实体??[/quote] 他可以根据实体生成表,或自己手动写实体然后进行自动绑定,不需要什么配置,你看一下他的DEMO就明白了花不到半小时时间。要是EF,你起码要用几天来学习他的配置[/quote] 我看ServiceStack.orm 官网,貌似是收费的[/quote] 4.0以后收费了。不过这东西是开源的。在github下载,接下来 你自己懂的了。[/quote] where 条件动态拼接有好的解决方案吗?这个ORM,EF也没有,不过通过lingkit可以解决
本拉灯 2015-03-02
  • 打赏
  • 举报
回复
引用 24 楼 wangjun8868 的回复:
[quote=引用 23 楼 wyd1520 的回复:] [quote=引用 22 楼 wangjun8868 的回复:] [quote=引用 9 楼 wyd1520 的回复:] EF的配置也是麻烦的,建议用ServiceStack.orm吧,这个东西就不错。
ServiceStack.orm怎么配置数据连接引擎 如何根据现有的表生成实体??[/quote] 他可以根据实体生成表,或自己手动写实体然后进行自动绑定,不需要什么配置,你看一下他的DEMO就明白了花不到半小时时间。要是EF,你起码要用几天来学习他的配置[/quote] 我看ServiceStack.orm 官网,貌似是收费的[/quote] 4.0以后收费了。不过这东西是开源的。在github下载,接下来 你自己懂的了。
编程有钱人了 2015-03-02
  • 打赏
  • 举报
回复
引用 23 楼 wyd1520 的回复:
[quote=引用 22 楼 wangjun8868 的回复:] [quote=引用 9 楼 wyd1520 的回复:] EF的配置也是麻烦的,建议用ServiceStack.orm吧,这个东西就不错。
ServiceStack.orm怎么配置数据连接引擎 如何根据现有的表生成实体??[/quote] 他可以根据实体生成表,或自己手动写实体然后进行自动绑定,不需要什么配置,你看一下他的DEMO就明白了花不到半小时时间。要是EF,你起码要用几天来学习他的配置[/quote] 我看ServiceStack.orm 官网,貌似是收费的
本拉灯 2015-03-02
  • 打赏
  • 举报
回复
引用 22 楼 wangjun8868 的回复:
[quote=引用 9 楼 wyd1520 的回复:] EF的配置也是麻烦的,建议用ServiceStack.orm吧,这个东西就不错。
ServiceStack.orm怎么配置数据连接引擎 如何根据现有的表生成实体??[/quote] 他可以根据实体生成表,或自己手动写实体然后进行自动绑定,不需要什么配置,你看一下他的DEMO就明白了花不到半小时时间。要是EF,你起码要用几天来学习他的配置
编程有钱人了 2015-03-02
  • 打赏
  • 举报
回复
引用 9 楼 wyd1520 的回复:
EF的配置也是麻烦的,建议用ServiceStack.orm吧,这个东西就不错。
ServiceStack.orm怎么配置数据连接引擎 如何根据现有的表生成实体??
yb00k 2015-02-28
  • 打赏
  • 举报
回复
首先感谢各位,看了各位大神的回复后倍感差距 看来要去研究的东西还挺多的。 不过感觉确实EF这个ORM 有些地方确实很不爽,估计是还没完全吃透熟练的缘故。吃透了自己搞个生成工具来玩! 再次感谢各位参与!
  • 打赏
  • 举报
回复
不过上述这些其实对我们来说已经毫不重要了,我只是在这里介绍一下至少5年以前我们所知道的 ORM 理念,以及微软的 code first 的实际目标跟其它 ORM 的差距而已。 我们现在只使用 NoSql、无模式的数据库。就这个领域而言,更加不存在什么“可视化工具设置数据库表”的问题。 使用 NoSql 那么你的对象可以直接保存到数据库,而且速度比关系数据库快数十倍(如果对多个字段索引的话,那么速度可能会下降一些)。并且“模式改变”的问题需要自己去处理,数据库也不管了。这就是与面向关系数据库的ORM所不同的另外一种理念了。但是有一点是一致的,就是 code first 编程风格越来越爽,而不是退回到“八股文”阶段。
  • 打赏
  • 举报
回复
这个就是理念的不同。ORM的理念是:Model代码就是文档,而不是通过数据库表来作为文档,也不是另外再给开发什么软件工程工具输出的文档。
缪军 2015-02-28
  • 打赏
  • 举报
回复
引用 14 楼 sp1234 的回复:
而分析设计之后,到了比较低级的(只占一小部分开发时间的)编码实施阶段,如果我们有一个傻瓜化的开发工具,将效率(特别是每天修改几十遍数据库表定义的效率)提高10倍,这时候还是必要的。
数据库的表结构的更新不应该导致应用程序的更新,反之亦然:应用程序的更新也不应该导致数据库的更新, 只有设计文档的更新,才会导致应用程序或者或者数据库的更新 哪怕是没有数据库,应用程序组件一样通过测试, 开发工具应该是根据设计文档自动更新数据库或者应用程序, 而无法自动产生的数据库对象或者应用程序对象:比如说复杂的报表,那么设计文档也是可以用来自动化测试这些报表的
  • 打赏
  • 举报
回复
引用 9 楼 wyd1520 的回复:
EF的配置也是麻烦的,建议用ServiceStack.orm吧,这个东西就不错。
是的。
种草德鲁伊 2015-02-28
  • 打赏
  • 举报
回复
我自己写了一个简单的建模工具(非UML,UML不适用),基于模型可以导出生成任何东西。
  • 打赏
  • 举报
回复
EF 没有让程序员感觉到类似于 ORM 那样的开发效率,反而使得原本挺好用的 ORM 项目放弃开发了(都以为微软会重点去开发 EF,所以提早放弃了 ORM 开发)。所以说微软的 EF 真的是很害人。 当你写下一个 model 定义,那么数据库表就自动创建了(包括自动进行更新),这本来就是“可执行的文档驱动的数据库定义”。这就不需要让无关的人员(例如dba)去插手初级的开发工作,以此来解决不同角色的人员之间的沟通和衔接问题,避免写多余的文档。
  • 打赏
  • 举报
回复
ORM解决的是最底层、最傻瓜的化的那个问题,也就是“自动产生数据库表、自动增删改查”的问题。比如说我们有200个model类型,其中80个是用来自动化地去驱动数据库模型的model所以需要“傻瓜化地对应”,另外120个则是需要你自己去写什么“高级的映射”关系的(例如当访问“打开聊天室”功能时,业务逻辑层返回的一个model是将聊天室信息、参与者信息、第一屏幕聊天信息、礼物排序信息等涉及6、7个数据库表的信息综合在一起的一个model)。 这里的关键就是到底需不需要 ORM 的问题。如果说一切增删改查都使用手动写的 SqlHelper 很好地自己写代码完成了,那么就不用 ORM。反之如果说要用 ORM,那么就一定要存在一些跟数据库表一一对应的实体类型。通过这些实体才能做到ORM。 说BLL、model的设计不需要跟数据库表一一对应,那是从系统分析和设计角度。而分析设计之后,到了比较低级的(只占一小部分开发时间的)编码实施阶段,如果我们有一个傻瓜化的开发工具,将效率(特别是每天修改几十遍数据库表定义的效率)提高10倍,这时候还是必要的。
缪军 2015-02-28
  • 打赏
  • 举报
回复
无论是CodeFirst还是DbFirst都是依赖实现,而不是依赖抽象,说到底ORM还是E-R思想下的数据驱动模式, 只有设计文档才是Code和Db共同依赖的东西, 好的设计文档是可以自动执行的,也是可以自动测试的
software_artisan 2015-02-28
  • 打赏
  • 举报
回复
其实在我的设计里面,类属性和数据库表并不一一对应。所以,无论是code fast还是 db fast,都不是我需要的。我需要的是一个能够提供更高级的映射的功能,而不是简单到愚蠢的一一对应。
  • 打赏
  • 举报
回复
由于记录有Register过的每一个数据库关联实体类型的信息签名 --> 由于记录有Register过的每一个数据库关联实体类型的信息签名已经在数据库中
  • 打赏
  • 举报
回复
在我们以前的代码中,(例如)只要定义
public class ABC
{
    public int X;
    public DateTime Y;
    public string Z;
    public DEF u;
    public HG[ ] v;
} 
然后代码中有一句
Db.RegisterType(typeof(ABC));
那么我们的ORM系统就会自动给创建ABC、DEF、HG三个数据库表,以及其中间关联表了。当程序源代码被改动了,程序再次运行时,由于记录有Register过的每一个数据库关联实体类型的信息签名,所以“一瞬间”就能判断出哪些数据库表需要先自动升级(大不了,如果你的升级程序不够智能,你可以在程序启动时立刻检测出来并且报一个错,让测试人员反馈给开发人员)。 并且当你修改了代码中的实体定义后,查询时类似于直接写
var query = from x in Db.RemoteTable<ABC>() where x.u.Name=="张三" select x;
这就行了,返回的就是你修改过的定义的对象。并不需要用好几分钟时间vs去在内存中重建什么数据模型类,然后才能编译程序并开始测试。(我们的查询时基于sql语句的,想开发linq provider后来放弃了,因为我们转到 NoSql数据库上了) 这一切的 ORM 操作都是自动化的。这种极端方便的维护数据库的方式(毫无传统dba的痕迹的方式)才叫做ORM! 所以我说,微软的 code first 的基本功能太差了,使用起来太繁琐,让人无法接受。但是我同样的理由,觉得 db first 的方式更是难用得没法提。 所以我对于这类 ORM 工具的“方便性”的排序是这样的,db first最差,code first第二差,都比一个好点的第三方 ORM 难用数倍。
编程有钱人了 2015-02-27
  • 打赏
  • 举报
回复
不是有自带的吗?根据数据库表自动生成
yb00k 2015-02-27
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
你不觉得这样就是在建立数据库吗??? PD满足你的需求啊
可以这么理解,PD没用过,搜索了下感觉使用起来挺复杂的!
  • 打赏
  • 举报
回复
你不觉得这样就是在建立数据库吗??? PD满足你的需求啊
加载更多回复(6)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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