實體框架 - 使用外鍵插入

c# entity-framework foreign-keys insert-update

如果某個地方有明確的答案,請道歉。但由於它包含一個外鍵,我無法插入到一個簡單的表中。

任務表

  • TaskId(PK)
  • 描述
  • StatusId(FK)

    我嘗試插入其中:

            Task t = new Task();
            t.Id = 1234;
            t.Title = "foo";
            t.Status = db.Status.ToList().First();
    

    但是獲取updateException錯誤: 正在從AssociationSet'FK_Task_Status'添加或刪除關係。對於基數約束,還必須添加或刪除相應的“任務”。

    我該如何插入此表?

    乾杯

    ....

    發現我的問題......

    我的架構錯了。當我創建我的外鍵時,我將它指向錯誤的字段。看看SQL分析器,看到了這個:

    SELECT 1 AS [C1],[Extent1]。[Id] AS [Id],[Extent1]。[Descr] AS [Descr],[Extent2]。[Id] AS [Id1] FROM [dbo]。[Status] AS [Extent1] LEFT OUTER JOIN [dbo]。[Task] AS [Extent2] ON [Extent1]。[Id] = [Extent2]。[Id]

    應該是這個(加入statusId而不是id):

    SELECT 1 AS [C1],[Extent1]。[Id] AS [Id],[Extent1]。[Descr] AS [Descr],[Extent2]。[Id] AS [Id1] FROM [dbo]。[Status] AS [Extent1] LEFT OUTER JOIN [dbo]。[Task] AS [Extent2] ON [Extent1]。[Id] = [Extent2]。[StatusId]

    傻我;)

  • 熱門答案

    在.net framework 4.0中你可以使用這種簡單的方法:

     Task t = new Task();
        t.Id = 1234;
        t.Title = "foo";
        t.StatusId = 5678;
    

    參考: http//blogs.msdn.com/b/adonet/archive/2009/11/06/foreign-key-relationships-in-the-entity-framework.aspx



    Related

    許可下: CC-BY-SA with attribution
    不隸屬於 Stack Overflow
    這個KB合法嗎? 是的,了解原因
    許可下: CC-BY-SA with attribution
    不隸屬於 Stack Overflow
    這個KB合法嗎? 是的,了解原因