Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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
C# 是否更改代码优先实体框架中的列名?_C#_Entity Framework - Fatal编程技术网

C# 是否更改代码优先实体框架中的列名?

C# 是否更改代码优先实体框架中的列名?,c#,entity-framework,C#,Entity Framework,我有以下数据类: public class X { public int ID{ get; set; } public string Value{ get; set; } public virtual ICollection<Y> Ys{ get; set; } } public class Y { public int ID{ get; set; } public string Value{ get; set; } public

我有以下数据类:

public class X
{
    public int ID{ get; set; } 
    public string Value{ get; set; }
    public virtual ICollection<Y> Ys{ get; set; }
}

public class Y
{
    public int ID{ get; set; } 
    public string Value{ get; set; }
    public virtual ICollection<X> Xs{ get; set; }
}
我想将X_ID更改为XID,将Y_ID更改为YID,但这会导致错误:

Invalid column name 'X_ID'.
Invalid column name 'Y_ID'.

如何更改列名而不遇到此问题?

您是否正在编写第一代代码?实际上,我会对变量名进行更改,然后实际删除已创建的数据库,而不是更新,如果您正在尝试的话,然后重新创建。我在使用另一种方法时也遇到过类似的问题,即先使用DB。

我最近遇到了这个问题,我第一次尝试解决它是编辑迁移并更新那里的列名,但遗憾的是,这导致在
Seed()
方法中引发了异常。为了解决这个问题,我需要修改我的类,使用您的示例,这些类可能如下所示:

public class X
{
    public int ID { get; set; } 
    public string Value { get; set; }

    public int YID { get; set; }
    public virtual ICollection<Y> Ys { get; set; }
}

public class Y
{
    public int ID { get; set; } 
    public string Value { get; set; }

    public virtual ICollection<X> Xs{ get; set; }
}
注意:我还尝试了一种不需要将
public int YID
属性添加到
classx
的替代方法。对于您的示例,它类似于:

 modelBuilder.Entity<X>()
    .HasRequired(x => x.Y)
    .WithMany()
    .Map(x => x.MapKey("YID"));
modelBuilder.Entity()
.has必需(x=>x.Y)
.有很多
.Map(x=>x.MapKey(“YID”);

这有效地执行了与我在迁移中手动执行的相同的编辑,但仍然导致在
Seed()
方法中引发异常,抱怨列
Y\u ID
不存在。只添加
YID
属性更简单。

运行
updatedatabase
命令或更新edmx,具体取决于生成内容的方式。这可能不是解决此问题的更好方法。您可以简单地重写OnModelCreating方法。
class XConfiguration : EntityTypeConfiguration<X>
{
    public XConfiguration()
    {
        HasRequired(x => x.Ys)
            .WithMany(y => y.Xs)
            .HasForeignKey(x => x.YID);
    }
}
 modelBuilder.Entity<X>()
    .HasRequired(x => x.Y)
    .WithMany()
    .Map(x => x.MapKey("YID"));