代码之家  ›  专栏  ›  技术社区  ›  Nick.Mc

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

  •  1
  • Nick.Mc  · 技术社区  · 12 年前

    在专注于数据库多年之后,我将重返编程领域。我曾经是VB6中的一名枪手,但.Net让我举步维艰。

    我正在尝试从一个已经存在的数据库中用MVC构建一个web应用程序。我大致如下: http://msdn.microsoft.com/en-us/data/gg685489.aspx

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

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

    似乎有很多不同的方法来构建一个启用数据库的web应用程序。如果我对语法更熟悉的话,我现在就可以手工编码了。

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

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

    Q3:如果我手动创建关联并构建,我会遇到一些错误。似乎创建关联会针对实体('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 回复  |  直到 12 年前
        1
  •  1
  •   Nick.Mc    12 年前

    如上所述,这是我围绕这个问题的工作方式:

    我创建了剩余的缺失关联,如下所示:

    1. 右键单击设计图面,添加关联
    2. 定义关联,为其命名,设置正确的基数
    3. UNTICK'将外键属性添加到….'然后按“确定”
    4. 单击工作服务上的关联,然后在属性页面中单击引用约束属性并定义它(主体是您的“查找”端)

    谢谢你试图帮助每个人,但我怀疑我的问题可能很难重现。