0

Project と ProjectType の 2 つのエンティティがあります。

プロジェクトは -ID,TypeID,name を持っています ProjectType は - ID,name を持っています

TypeId は Project と ProjectType テーブル間の外部キーです

以下のようなことをした後、手元にオブジェクトがあるとしましょう

var selprojtype = db.ProjectTypes.Single(p => p.Name == id);

次に、プロジェクトタイプにリンクしたい新しいプロジェクトを作成していると言います

Project project = new Project();

私が行った場合

project.ProjectType = selprojtype;

TypeId が設定されていません。そのため、SaveChanges メソッドを呼び出す前に、常に次のように外部キーを排他的に設定することになります。

project.TypeId= selprojecttype.ID

関連エンティティをリンクするより良い方法はありますか?

4

2 に答える 2

0

オブジェクト間の関係を確立する前に、両方のオブジェクトが同じデータ コンテキストにある必要があります。したがって、コードは次のようになります。

var selprojtype = db.ProjectTypes.Single(p => p.Name == id);
Project project = new Project();

//now add newly created project object to the context
db.Projects.Attach(project);

//now establish the relation
 project.ProjectType=selprojtype;
于 2012-08-14T05:11:21.753 に答える
0

あなたができることはこれです:

public int? TypeId { get; set; }
private ProjectType projectType;
public ProjectType ProjectType{
    get { return projectType;}
    set {
          projectType = value;
          TypeId = value != null ? value.Id : null;
        }
}

このようにして、リレーションを割り当てるときに FK を直接制御します。

于 2012-08-14T05:20:45.450 に答える