当前位置: 首页 > 编程语言 > C#

实体框架核心自定义脚手架分享

时间:2023-04-10 18:14:23 C#

实体框架核心自定义脚手架我已经完成了我的SQLServer数据库的脚手架。它将在指定文件夹中创建POCO对象。我想要做的是让它从我的基类扩展。我也在使用存储库模式,所以我需要在每个实体上都有Id键,我不想每次重新缩放数据库时都更改它。脚手架模型示例publicpartialclassFood{publicintId{get;放;}公共字符串名称{得到;放;}公共字符串描述{得到;放;}publicdoublePrice{get;放;}}预期结果:publicpartialclassFood:EntityBase{publicstringName{get;放;}公共字符串描述{得到;放;}publicdoublePrice{get;放;}}publicclassEntityBase:IEntityBase{publicintId{get;放;您可以使用DbContextWriter和EntityTypeWriter自定义脚手架输出。在较新版本的EntityCoreWriter中重命名:编写一些自定义类型编写器,您可以覆盖所有内容,您将获得自己的代码生成器://HEREYOUCANCHANGETHEWAYTYPESAREGERATEDANDYOUCAN添加接口或基类作为父类.publicclassCustomEntitiyTypeWriter:EntityTypeWriter{publicCustomEntitiyTypeWriter([NotNull]CSharpUtilitiescSharpUtilities):base(cSharpUtilities){}//WriteCode返回生成的重写类,你可以使用stringWriteCode([NotNull]EntityConfigurationentityConfiguration){varclassStr=base.WriteCode(实体配置);vardefaultStr="publicpartialclass"+entityConfiguration.EntityType.Name;varbaseStr="publicpartialclass"+entityConfiguration.EntityType.Name+":EntityBase";classStr=classStr.Replace(defaultStr,baseStr);返回类Str;在设置中声明它:publicstaticvoidConfigureDesignTimeServices(IServiceCollectionservices)=>services.AddSingleton();然后使用scaffolddb你可以使用CustomDBContextWriterforDBCont分机做同样的事情。目前,脚手架工具不支持您描述的场景。没有自定义其输出的选项,只有生成文件的位置以及是否使用FluentAPI或数据注释进行配置。EFCore是一个CodeFirst框架。建议一旦模型从现有数据库逆向工程,就可以使用迁移来保持两者同步。话虽如此,我意识到根据团队中职责的分配方式,这可能并不总是可行的。在这种情况下,您可能需要考虑在EFCore的GitHub存储库上提出请求此功能的问题:https://github.com/aspnet/EntityFramework。@TornikeCholadze的出色回答让我朝着正确的方向前进,但在最新版本的.NetCore(2.0>)中,就设置而言,这似乎有点不同。自定义实体类型生成器:classMyEntityTypeGenerator:CSharpEntityTypeGenerator{publicMyEntityTypeGenerator(ICSharpUtilitiescSharpUtilities):base(cSharpUtilities){}publicoverridestringWriteCode(IEntityTypeentityType,string@namespace,boolCodeData.strentrite,base(TypeuseData.strentrite){@namespace,使用数据注解);varoldString="publicpartialclass"+entityType.Name;varnewString="publicpartialclass"+entityType.Name+":EntityBase";返回代码。替换(旧字符串,新字符串);}}和Setting,它由同一个程序IDesignTimeServices的一个类组成,并实现了IDesignTimeServices:以上就是C#学习教程:实体框架核心自定义脚手架分享的全部内容,如果对大家有用还需要了解更多关于C#学习教程,希望大家多多关注——}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: