C# 使用代码优先的ASP MVC删除表列

C# 使用代码优先的ASP MVC删除表列,c#,sql,sql-server,asp.net-mvc,entity-framework-migrations,C#,Sql,Sql Server,Asp.net Mvc,Entity Framework Migrations,我有两个班A和BB有一个外键指向a class A { byte Id{get; set;} string Name{get;set;} } 及 我的问题是: 我创建了一个类a,其属性id类型为int 我运行更新数据库 我将id的数据类型修改为byte 我再次运行更新数据库 我发现在使用A的id作为外键的表B中有两列,即aId和A\u id 我的问题是:如何使用代码优先的方法删除列a_Id?或者无论如何,这是可行的 我尝试运行查询:ALTER TABLE DROP COL

我有两个班
A
B
<代码>B有一个外键指向
a

class A {
     byte Id{get; set;}
     string Name{get;set;}
 }

我的问题是:

  • 我创建了一个类
    a
    ,其属性
    id
    类型为
    int
  • 我运行
    更新数据库
  • 我将
    id
    的数据类型修改为
    byte
  • 我再次运行
    更新数据库
  • 我发现在使用
    A
    id
    作为外键的表
    B
    中有两列,即
    aId
    A\u id
    我的问题是:如何使用代码优先的方法删除列
    a_Id
    ?或者无论如何,这是可行的

    我尝试运行查询:
    ALTER TABLE DROP COLUMN a\u Id
    -失败,因为一个或多个对象访问此列。

    我还尝试使用VS服务器资源管理器直接删除该列,使用表定义删除该列。但它也不起作用

    谢谢

    请按照以下步骤操作
    1:从模型中删除属性。
    2:在包管理控制台中运行“启用迁移”。
    3:下一次运行“添加迁移”MigrationsName。如果在任何情况下显示“项目未能生成,请重新生成项目”。

    4:现在运行“更新数据库”

    也许您忘了在模型中更改B的FK类型

    [Required]
    public byte ClassAId{ get; set; }
    
    public virtual ClassA ClassA{ get; set; }
    
    还可以查看迁移的Up和Down方法


    classA的Id上的属性[Key]也可能有用。

    您可以注释B类并更新数据库!(升降台)
    再次用B类更新数据库!:)对我来说,这项工作

    我在学习ASP.net时遇到了同样的问题 删除不需要的道具的解决方案如下:

    1-您必须将其作为索引删除 因此,添加新的迁移并在UP方法中编写此指令

        DropIndex("dbo.TableName", new[] { "ColumnName" });
    
    2-更新数据库 注意:在这个阶段,如果打开表的定义(SQL代码),可以确保索引已经消失

    3-新迁移,但现在使用Up方法写入

     DropColumn("TableName", "ColumnName");
    
    4-更新数据库


    它消失了

    你应该提供A、B类源代码吗?“文本”问题将返回文本答案从模型中删除属性是什么意思?从
    B
    中删除
    A
    相关属性,例如,
    id
    ?尝试从数据库表中删除的属性
     DropColumn("TableName", "ColumnName");