读书人

EF为何会生成多余字段?

发布时间: 2013-01-05 15:20:39 作者: rapoo

EF为什么会生成多余字段???
EF模型
EF为何会生成多余字段?

用“根据模型生成数据库”生成的SQL脚本:


CREATE TABLE [dbo].[User] (
[ID] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(max) NOT NULL,
[Blog_ID] int NOT NULL
);
GO

-- Creating table 'Blog'
CREATE TABLE [dbo].[Blog] (
[ID] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(max) NOT NULL,
[UserId] int NOT NULL
);
GO

-- Creating table 'Post'
CREATE TABLE [dbo].[Post] (
[ID] int IDENTITY(1,1) NOT NULL,
[Title] nvarchar(max) NOT NULL,
[Content] nvarchar(max) NOT NULL,
[BlogId] int NOT NULL,
[Blog_ID] int NOT NULL
);
GO

-- Creating table 'Comment'
CREATE TABLE [dbo].[Comment] (
[ID] int IDENTITY(1,1) NOT NULL,
[Title] nvarchar(max) NOT NULL,
[Content] nvarchar(max) NOT NULL,
[PostId] int NOT NULL,
[Post_ID] int NOT NULL
);
GO


大家看到了吧,为什么会给每张表生成多余一个外键字段呢(Blog_ID,Post_ID,这些加了下滑线的)?
这些外键字段我在模型时都已经弄好了的。
[解决办法]

[ForeignKey("tid")]
public AdDisplayType DisplayType
{
get;
set;
}

public int tid { get; set; }

这样指定
codefirst很有趣啊 只放一个实体类不指定外键 他会给你找个名字相近类型为那个实体主键的属性当成主键


[解决办法]
你还记得你建立这个东西的时候,那个向导页不, 下面有小的选项框“在模型中加入外键列”,你勾选的他,自然EF就生成了他,这是你自己选择滴。咋又怪到EF头上了

读书人网 >.NET

热点推荐