C# 如何使用EF 4.3.1映射列名?

C# 如何使用EF 4.3.1映射列名?,c#,asp.net-mvc,C#,Asp.net Mvc,我对简单映射有问题(使用EF4.3.1-代码优先的方法) 和带有intID和varcharsomeclass\u name的表someclass。 现在我想做的是用someclass\u Name映射Name modelBuilder.Entity<Someclass>() .Property(r => r.Name).HasColumnName("someclass_name"); modelBuilder.Entity() .Property(

我对简单映射有问题(使用EF4.3.1-代码优先的方法)

和带有intID和varcharsomeclass\u name的表someclass。 现在我想做的是用someclass\u Name映射Name

 modelBuilder.Entity<Someclass>()
             .Property(r => r.Name).HasColumnName("someclass_name");
modelBuilder.Entity()
.Property(r=>r.Name).HasColumnName(“someclass_Name”);

但ID不工作,异常表示:“自从创建数据库以来,上下文已经发生了变化。请考虑使用代码第一迁移来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)"

我也尝试过这样做:

modelBuilder.Configurations.Add(new SomeclassMap());

public class SomeclassMap : EntityTypeConfiguration<Someclass>
    {
        public SomeclassMap() {
          //  this.Property(r => r.Name).HasColumnName("someclass_name");
            Map(r =>
            {
                Property(m => m.Name).HasColumnName("restaurant_name");
            });
        }
    }
modelBuilder.Configurations.Add(newsomeclassmap());
公共类SomeclassMap:EntityTypeConfiguration
{
公共类映射(){
//this.Property(r=>r.Name).HasColumnName(“someclass_Name”);
地图(r=>
{
酒店(m=>m.Name)。HasColumnName(“餐厅名称”);
});
}
}

谁能告诉我我做错了什么?THX

您将希望使用EF 4.3的迁移实用程序。错误是通知您自数据库生成以来模型已更改,需要更新。查看此链接:

您将希望使用EF 4.3的迁移实用程序。错误是通知您自数据库生成以来模型已更改,需要更新。查看此链接:

不确定是否可以避免迁移通知,但您可以尝试将[Column(“someclass_name”)]添加到您的name属性中


请参阅名为

的部分,不确定它是否可以避免迁移通知,但您可以尝试将[Column(“someclass_name”)]添加到您的name属性中


请参阅名为

的部分,我安装了EF 5,但也有同样的问题。 我“发现”的是

[列(“名称”)]
公共字符串名称1{get;set;}

表示Name1指向DB中的字段“Name”。所以我没有更改字段名,我在类中更改了属性名,我让EF知道这个“Name1”指向“name”。
这有点奇怪,但它是这样工作的。DB可能会在某处写下DB哈希并检查它是否更改。但我还不知道在哪里可以找到它。

我安装了EF5,但也遇到了同样的问题。 我“发现”的是

[列(“名称”)]
公共字符串名称1{get;set;}

表示Name1指向DB中的字段“Name”。所以我没有更改字段名,我在类中更改了属性名,我让EF知道这个“Name1”指向“name”。 这有点奇怪,但它是这样工作的。DB可能会在某处写下DB哈希并检查它是否更改。但我还不知道在哪里可以找到它。

我找到了解决方案:

Database.SetInitializer<SomeDB>(null);
Database.SetInitializer(null);
我们需要打开数据库上下文检查,我找到了解决方案:

Database.SetInitializer<SomeDB>(null);
Database.SetInitializer(null);

我们需要打开数据库上下文检查。我以前看过这个链接。我会尝试遵循这个解决方案,但这是解决这个问题的唯一方法吗?是否可以使用OnModelCreating和modelBuilder。。。不知怎的?-顺便说一句,在我阅读迁移教程时,并没有关于在对象和数据库之间映射不同名称的内容。主要是关于添加新属性或删除Hx。我以前看过这个链接。我会尝试遵循这个解决方案,但这是解决这个问题的唯一方法吗?是否可以使用OnModelCreating和modelBuilder。。。不知怎的?-顺便说一句,在我阅读迁移教程时,并没有关于在对象和数据库之间映射不同的名称。主要是关于添加新属性或删除它没有。我可以使用它,但它不是用于EntityFramework5.0Beta吗?问题是他们为什么会这样做?我可以编写正确的代码,但它不能正常工作。首先我不熟悉代码,但它只是将您的属性更改视为实际的数据库更改。它不会将其视为只是重命名属性,而不是实际重命名数据库列。我不太熟悉如何“修复”它,这样它就不会将其视为实际的数据库更改,而只是属性名称更改(嗨,我找到了解决方案。我们需要关闭该数据库的上下文更改检查。SetInitializer(null);然后我们可以映射列名。它没有。我可以使用它,但它不是Entity Framework 5.0 Beta版吗?问题是他们为什么会出现这样的错误?我可以编写正确的代码,但它不能正确工作。我首先不熟悉代码,但它只是将您的属性更改视为实际的数据库更改。它不会像rena那样“看到”它正在重命名属性,但没有实际重命名数据库列。我不太熟悉如何“修复”它,这样它就不会将此视为实际的数据库更改,而只是属性名称更改。:(嗨,我找到了解决方案。我们需要关闭该数据库的上下文更改检查。SetInitializer(null);然后我们可以映射列名。