c# - Entity Framework - 大写第一个属性名称字母

标签 c# .net sql entity-framework

一般来说,我倾向于使用以下驼峰式命名我的 sql 数据库列:

camelCase(注意首字母小写)。

但是在使用 C# 时,我喜欢按照以下约定命名对象的公共(public)属性:

PascalCase(注意第一个是大写)。

Entity Framework 的默认行为是命名创建的类的属性以匹配它们在数据库中的相对列名。

项目/解决方案级别是否有任何属性可以更改以解决此问题?

最佳答案

是的。在这里你可以看到完整的例子:

using System;
using System.Data.Entity;

namespace ConsoleApplication1
{
    class MyDbContext : DbContext
    {
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Properties().Configure(c =>
            {
                var name = c.ClrPropertyInfo.Name;
                var newName = char.ToLower(name[0]) + name.Substring(1);
                c.HasColumnName(newName);
            });
        }

        public MyDbCondenxt(string cs) : base(cs)
        {

        }

        public DbSet<MyModel> MyModels { get; set; }

    }

    class Program
    {
        static void Main(string[] args)
        {
            var context = new MyDbContext ("DefaultConnection");
            context.MyModels.Add(new MyModel{SomeText = "hello"});
            context.SaveChanges();

            Console.ReadLine();
        }
    }

    class MyModel
    {
        public int Id { get; set; }
        public string SomeText { get; set; }
    }


}

属性名称是“SomeText”,列名称是“someText”。

关于c# - Entity Framework - 大写第一个属性名称字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6505088/

相关文章:

c# - 使用 WMI 调用解决 "Access Denied"异常

C#从一个线程设置字典对象是否线程安全,从另一个线程获取

c# - 是否可以将基于接口(interface)的模拟转换为对象?

C# HtmlEncode - ISO-8859-1 实体名称与数字

c# - 创建具有选项卡功能的 Web 浏览器

mysql - 使用 GROUP BY 时获取 desc 或最后插入的数据

sql - 列出 PostgreSQL 中模式的所有非生成序列

php - 无论表中的记录数如何,为每一列检索一条记录

c# - List.Add 似乎在重复条目。怎么了?

c# - 如何找出该语句生成的实际 SQL?