4

これに対する明確な答えがどこかにある場合は、お詫び申し上げます。しかし、外部キーが含まれているため、単純なテーブルに挿入できません。

タスクテーブル

  • 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 OUTERJOIN[dbo]。[Task]AS[Extent2]ON[Extent1]。[Id]=[Extent2]。[Id]

    これはこれである必要があります(idではなくstatusIdに参加します):

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

    愚かな私;)

  • 4

    3 に答える 3

    2

    .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

    于 2010-08-18T14:55:36.883 に答える
    0

    「EntityFramework1.0」(今日まで最新のバージョン)を使用すると、正しいアイデアが得られます。データベースからステータスを取得して、タスクに設定します。上記で使用している構文のStatusエンティティを実際に取得していますか?

    コードをステップ実行して、タスクエンティティの参照が実際のマテリアライズされたステータスエンティティに設定されていることを確認します。

    于 2010-04-12T16:22:06.913 に答える
    0

    あなたが試すことができます

            Task t = new Task();
            t.Id = 1234;
            t.Title = "foo";
            t.Status.EntityKey = new EntityKey("tblStatus","StatusId",t.StatusID);
    

    これがうまくいくことを願っています

    于 2010-04-12T16:55:48.913 に答える