Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework EF命名,是否有将所有字段名更改为小写的设置?_Entity Framework_Breeze - Fatal编程技术网

Entity framework EF命名,是否有将所有字段名更改为小写的设置?

Entity framework EF命名,是否有将所有字段名更改为小写的设置?,entity-framework,breeze,Entity Framework,Breeze,当将EF与breezejs一起使用时,似乎服务器端的每个名称都应该以大写字母开头,而在客户端,则使用驼峰样式,如 EF上的名字和 客户端的名字 我认为它不如所有小写字母好,每个人都能理解名字,不需要名字或名字 我想知道是否强烈建议不要使用所有小写名称?如果我想使用所有小写名称,有没有办法告诉EF(database first)使用所有小写名称创建类,不管它们在db端是什么 谢谢我认为您应该在JSON序列化和反序列化中这样做。如果您使用的是Web API,则可以这样做。发件人: 如果您不想在JSO

当将EF与breezejs一起使用时,似乎服务器端的每个名称都应该以大写字母开头,而在客户端,则使用驼峰样式,如

EF上的名字和 客户端的名字

我认为它不如所有小写字母好,每个人都能理解名字,不需要名字或名字

我想知道是否强烈建议不要使用所有小写名称?如果我想使用所有小写名称,有没有办法告诉EF(database first)使用所有小写名称创建类,不管它们在db端是什么


谢谢

我认为您应该在JSON序列化和反序列化中这样做。如果您使用的是Web API,则可以这样做。发件人:

如果您不想在JSON序列化中实现这一点,那么如果您首先使用EF6代码,您可以对列名执行一些自定义约定来实现这一点。对桌子做类似的事情

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder
        .Properties()
        .Configure(p => p.HasColumnName(p.ClrPropertyInfo.Name.ToLower()));




    modelBuilder.Configurations.Add(new UserConfiguration());
    modelBuilder.Configurations.Add(new UserHashHistoryConfiguration());
}

有关EF6中自定义约定的更多信息,请参见MSDN。这就是Breeze Naming约定的用途

见:

但是您可能会遇到问题,因为NamingConvention需要能够往返于您的姓名。i、 e.从服务器名到客户端名再到服务器名的传递需要返回到原始名称。根据您的规则,除非您愿意保留所有以前映射的名称的映射或提出其他启发式方法,否则无法从全小写名称返回到原始服务器名称

下面的例子说明了这个问题

var lowerCaseNamingConvention = new breeze.NamingConvention({
  serverPropertyNameToClient: function (serverPropertyName, prop) {
     return serverPropertyName.toLowerCase();
  }

  clientPropertyNameToServer: function (clientPropertyName, prop) {
     // need to get back to original name here
     return clientPropertyName. ???
  }           
});

lowerCaseNamingConvention.setAsDefault();

我不清楚为什么要更改服务器端的属性名称。.NET类中的属性名称应为PascalCase

您可以自由地在EF映射器中随意命名属性。首先在EF数据库中进行比较困难;您可以使用设计器将每个属性名称完全映射为您希望看到的名称,但是wow非常耗时。如果您的模型很大,T4中有一些先进的技术可能会更好(请注意:您可以花更多的时间编写/调试T4,而不仅仅是手工苦读和映射属性名)

如果您愿意首先使用代码,您可以看看哪一个看起来足够灵活和强大

你知道这不是一个轻松的问题,对吗?Breeze
NamingConvention
(其他人提到过)是让客户端属性看起来像您希望的那样的合适地方

并不总是有一种方法来计算变换;有时候你只需要在你的
命名约定中提供一本字典

但是,您似乎希望通过在服务器上重新创建类来处理这个问题。这(正如你所注意到的)更加困难和/或乏味。微风对此无能为力


p、 美国:在序列化过程中使用JSON.NET配置尝试处理此问题将不起作用。您需要可以在查询中引用的属性名称,而JSON.NET不会对查询字符串中提到的属性名称进行变形。

我想我表达得不好,我认为这是实体框架部分的命名,我有其他来源的表,一些字段的命名都是小写,有些表字段中使用大写字母,如firstName或firstName。我正在寻找一种方法,让EF创建所有字段都是小写的类(首先是数据库)。只是想知道如何做到这一点,如果这样做是好的,或者我应该去那些表并修复那些字段名吗?我敢打赌,在数据库中重命名本身是一个糟糕的选择;有人会生你的气的。如果您首先使用的是EF6代码,则可以修复名称。但是你坚持先用DB。。。使用我假设的设计器。设计器允许您手动重命名各个属性。如果我这样做的话,我可能会编写翻译代码来对EDMX进行后期处理,并自动为我这样做,而不是试图手动捕获它们。记住使用源代码管理:-)!!!谢谢,看我的评论上面,我想我正在寻找更多的关于如何让英孚做到这一点
var lowerCaseNamingConvention = new breeze.NamingConvention({
  serverPropertyNameToClient: function (serverPropertyName, prop) {
     return serverPropertyName.toLowerCase();
  }

  clientPropertyNameToServer: function (clientPropertyName, prop) {
     // need to get back to original name here
     return clientPropertyName. ???
  }           
});

lowerCaseNamingConvention.setAsDefault();