首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对象'DF__*‘依赖于列'*’-将int改为double

对象'DF__*‘依赖于列'*’-将int改为double
EN

Stack Overflow用户
提问于 2013-10-19 00:26:59
回答 8查看 213.4K关注 0票数 214

基本上,我在EF数据库中得到了一个具有以下属性的表:

代码语言:javascript
复制
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列评等失败,因为一个或多个对象访问此列.

有什么问题吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-10-19 01:10:03

试试这个:

在更改字段类型之前删除约束DF_Movies_Rating__48CFD27E。

此约束通常由DBMS ( Server)自动创建。

要查看与表关联的约束,请在对象资源管理器中展开表属性,然后展开类别约束,如下所示:

在更改字段类型之前,必须移除约束。

票数 318
EN

Stack Overflow用户

发布于 2016-08-18 15:33:40

我将此作为一个响应来解释约束来自何处。我试着在注释中这样做,但是很难很好地编辑:-/

如果创建(或更改)具有默认值的列的表,它将为您创建约束。

例如,在您的表中,它可能是:

代码语言:javascript
复制
CREATE TABLE Movie (
    ...
    rating INT NOT NULL default 100
)

它将为默认的100创建约束。

如果你像这样创建它

代码语言:javascript
复制
CREATE TABLE Movie (
  name VARCHAR(255) NOT NULL,
  rating INT NOT NULL CONSTRAINT rating_default DEFAULT 100
);

然后,您将得到一个名称很好的约束,当您更改所述表时,该约束更容易引用。

代码语言:javascript
复制
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;

您可以组合最后两个语句,以便更改列并将约束命名为一行(如果它是现有的表,则必须这样做)

票数 66
EN

Stack Overflow用户

发布于 2015-05-15 23:37:22

这就是tsql的方式

代码语言:javascript
复制
 ALTER TABLE yourtable DROP CONSTRAINT constraint_name     -- DF_Movies_Rating__48CFD27E

为了完整起见,这只会显示@Joe的评论作为回答

票数 50
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19460912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档