实体框架复杂类型的列命名约定在使用复杂类型时,默认的列命名约定使用下划线。这意味着以这种方式定义类型:[ColmplexType]publicclassContact{stringEmail{get;set;}stringPost{get;set;}}publicEntityN{//...我们将获得以这种方式命名的列当前类型一次配置所有名称?对于某些复杂类型,我宁愿不提及属性名称(“Contact”),其他人使用CammelCase连接名称和属性,从不使用undersore。讨论:这有效(创建特定于表的配置信息)配置(p=>p.HasColumnName(p.ClrPropertyInfo.Name));base.Apply(配置,属性);}}和OnModelCreatingmodelBuilder.Conventions.AddBefore(newCustomComplexTypeAttributeConvention());它有效,但我不确定它是否是一种正确的编码方式:1)“AddBefore”是否按预期工作(我不想删除默认行为,只是覆盖一种情况下的默认行为)?2)将“自定义代码”放入Apply方法或构造函数中的最佳选择。ComplexTypeAttributeConvention的断点和反汇编导致我们不覆盖“默认”命名约定,而是使用“循环”通过“所有类型的所有属性”。这看起来像是最可靠的解决方案,但它仍然是一个“hack”(它不会覆盖默认的“下划线”约定,而是模拟“ColumnAttribute”的呈现):().Where(pi=>pi.DeclaringType==typeof(T)).Configure(p=>p.HasColumnName(p.ClrPropertyInfo.Name));}}//...modelBuilder.Conventions.Add(newBriefNameForComplexTypeConvention());我以前从来没有这样做过,但是值得尝试ComplexTypeAttributeConvention,你可以删除默认的并在DbModelBuilder.Conventions中添加自定义的:以上是C#学习教程:实体框架复杂类型列命名约定分享如果有用给你和你需要了解更多的C#学习教程,希望你多多关注——。姓名));}}protectedoverridevoidOnModelCreating(DbModelBuildermodelBuilder){modelBuilder.Conventions.Remove();modelBuilder.Conventions.Add(newCustomComplexTypeAttributeConvention());//...}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
