MVC 3实体数据模型没有获取外键

时间:2012-09-22 02:39:47

标签: asp.net-mvc asp.net-mvc-3 entity-framework associations ado.net-entity-data-model

我在关注数据库多年后回归编程。我曾经是VB6中的枪,但.Net让我挣扎。

我正在尝试从已有的数据库在MVC中构建一个Web应用程序。我大致跟着这个:http://msdn.microsoft.com/en-us/data/gg685489.aspx

我正在使用Visual Web Developer Express 2010 10.0.40219.1 SP1Rel 我不知道如何计算出各种模板和插件的版本。

我正在从exsting数据库生成实体数据模型。我正在使用的三个表定义了主键和外键,但是当我导入它时,数据模型中没有创建任何关联

似乎有很多不同的方法来构建支持数据库的Web应用程序。如果我对语法更熟悉,我现在可以手工编写它。

Q1:知道为什么不创建关联?

Q2:您能否验证我是否需要关联来告诉代码生成器所有内容是如何组合在一起的? (即在代码中自动生成适当的方法)。我看不出它会如何起作用。

问题3:如果我手动创建关联和Build,我会遇到一些错误。看来创建关联会为实体创建一个属性('CustomerCustomer_ID),这需要映射到某个东西。但是,当我按“表映射”时,这不在要映射的列表中,我无法添加它。

Error   1 Error 3004: Problem in mapping fragments starting at line 198:
No mapping       specified for properties Task.CustomerCustomer_ID in Set Tasks.
An Entity with Key (PK) will not round-trip when: Entity is type [zzzz.Task]
Error   2 Error 11009: Property 'CustomerCustomer_ID' is not mapped.

这是我期望会生成关联的两个表的删节DDL

CREATE TABLE [dbo].[Customers](
    [Customer_ID] [int] IDENTITY(1,1) NOT NULL,
    [Customer_Name] [varchar](50) NOT NULL,
........
....
CONSTRAINT [PK_Customers] PRIMARY KEY CLUSTERED 
([Customer_ID] ASC))

CREATE TABLE [dbo].[Tasks](
    [Task_ID] [int] IDENTITY(1,1) NOT NULL,
    [TaskType_ID] [int] NOT NULL,
    [Emp_ID] [int] NOT NULL,
    [Customer_ID] [int] NOT NULL,
    [Status_ID] [int] NOT NULL,
    [Task_Desc] [varchar](300) NULL,
.....
..
CONSTRAINT [PK_Tasks] PRIMARY KEY CLUSTERED 
(
    [Task_ID] ASC
)

ALTER TABLE [dbo].[Tasks]  WITH CHECK ADD  CONSTRAINT [FK_Tasks_Customers] 
FOREIGN KEY([Customer_ID])
REFERENCES [dbo].[Customers] ([Customer_ID])
GO

1 个答案:

答案 0 :(得分:1)

如上所述,这就是我解决这个问题的方法:

我创建了剩下的遗失关联:

  1. 右键单击设计图面,添加关联
  2. 定义关联,为其命名,设置正确的基数
  3. UNTICK'添加外键属性....'并按OK
  4. 单击工作服务上的关联,然后在属性页面中单击Referential Constraint属性并定义它(principal是您的'lookup'侧)
  5. 感谢您尝试帮助所有人,但我怀疑我的问题可能难以重现。