基本上,我在EF数据库中得到了一个具有以下属性的表:
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Image { get; set; }
public string WatchUrl { get; set; }
public int Year { get; set; }
public string Source { get; set; }
public int Duration { get; set; }
public int Rating { get; set; }
public virtual ICollection<Category> Categories { get; set; }
但是,当我将评等的int改为double时,它工作得很好,在更新数据库时,我会得到以下错误:
对象'DF_Movies_Rating__48CFD27E‘依赖于列’‘。ALTER列评等失败,因为一个或多个对象访问此列.
有什么问题吗?
发布于 2013-10-19 01:10:03
试试这个:
在更改字段类型之前删除约束DF_Movies_Rating__48CFD27E。
此约束通常由DBMS ( Server)自动创建。
要查看与表关联的约束,请在对象资源管理器中展开表属性,然后展开类别约束,如下所示:
在更改字段类型之前,必须移除约束。
发布于 2016-08-18 15:33:40
我将此作为一个响应来解释约束来自何处。我试着在注释中这样做,但是很难很好地编辑:-/
如果创建(或更改)具有默认值的列的表,它将为您创建约束。
例如,在您的表中,它可能是:
CREATE TABLE Movie (
...
rating INT NOT NULL default 100
)
它将为默认的100创建约束。
如果你像这样创建它
CREATE TABLE Movie (
name VARCHAR(255) NOT NULL,
rating INT NOT NULL CONSTRAINT rating_default DEFAULT 100
);
然后,您将得到一个名称很好的约束,当您更改所述表时,该约束更容易引用。
ALTER TABLE Movie DROP CONSTRAINT rating_default;
ALTER TABLE Movie ALTER COLUMN rating DECIMAL(2) NOT NULL;
-- sets up a new default constraint with easy to remember name
ALTER TABLE Movie ADD CONSTRAINT rating_default DEFAULT ((1.0)) FOR rating;
您可以组合最后两个语句,以便更改列并将约束命名为一行(如果它是现有的表,则必须这样做)
发布于 2015-05-15 23:37:22
这就是tsql
的方式
ALTER TABLE yourtable DROP CONSTRAINT constraint_name -- DF_Movies_Rating__48CFD27E
为了完整起见,这只会显示@Joe的评论作为回答
https://stackoverflow.com/questions/19460912
复制相似问题