首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >实体框架-大写第一个属性名称字母

实体框架-大写第一个属性名称字母
EN

Stack Overflow用户
提问于 2011-06-28 18:33:55
回答 7查看 14.4K关注 0票数 20

通常,我倾向于使用以下camel大小写约定命名我的sql数据库列:

camelCase (注意第一个字母是小写的)。

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

CamelCase (注意第一个是大写的)。

实体框架的默认行为是命名所创建的类的属性,以便与它们在数据库中的相对列名相匹配。

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

EN

回答 7

Stack Overflow用户

发布于 2013-11-05 20:27:41

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

代码语言:javascript
复制
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”。

票数 15
EN

Stack Overflow用户

发布于 2011-06-28 18:40:29

我不知道解决方案级别,但你可以在你的实体上设置一个属性

代码语言:javascript
复制
[Table("myEntity")]
public class MyEntity{}
票数 3
EN

Stack Overflow用户

发布于 2013-05-07 02:15:48

实现这一目标并不是不可能的,但这并不容易。这在一定程度上取决于您正在使用的ef模型的类型,是代码优先还是数据库/模型优先(在这方面它们是相似的),或者您是否使用了旧的基于ObjectContext的方法。

通常,EF使用T4模板来创建实际的类和模型,但首先要编写代码,因此可以编辑T4模板并生成您想要的任何内容,例如使用PascalCasing自动生成属性。

如果您正在使用Code first (它实际上并不要求您先编码,这是一个可怕的名称),那么您可以使用Entity Framework强大的工具将您的数据库反向工程为code first模型,并且它再次使用T4来完成此操作。

如果您首先使用实际代码(即创建模型并从模型生成数据库),那么这在现有的EF5或更低版本中可能是不可能的。EF6 (目前在alpha中)有一种称为自定义约定的东西,您可能会为此使用它,但它距离生产质量还有很长的路要走。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6505088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档